Facebook единый маркер доступа к базе данных
Так что мое приложение единства несколько работает. что моя проблема сейчас заключается в следующем: экран, который появляется, когда я нажимаю кнопку входа с помощью Facebook в моем скрипте
это стандарт при тестировании в среде редактора Unity?
кроме того, я заметил, что экран запрашивает токен доступа. что я действительно хочу сделать, так это получить доступ к этому токену и передать его в метод аутентификации firebase для Facebook. я могу сохранить его, как у меня в функции authCallBack? если это так, могу ли я просто передать созданные учетные данные в метод accessToken, который вызывает задачу аутентификации, или я, конечно, полностью? Любая помощь будет оценена
Вот мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Facebook.Unity;
using Firebase.Auth;
public class FacebookHandler : MonoBehaviour {
// Use this for initialization
private void Awake()
{
FB.Init(setInit, onHideUnity);
}
void setInit()
{
if (FB.IsLoggedIn)
{
Debug.Log("fb is logged in");
}
else
Debug.Log("fb is not logged in");
}
//for whether the game is open or not
void onHideUnity(bool isGameShown)
{
if (!isGameShown)
{
Time.timeScale = 0;
}
else
Time.timeScale = 1;
}
public void fbLogin()
{
List<string> permissions = new List<string>();
//asks facebook for the users profile
permissions.Add("public_profile");
permissions.Add("email");
permissions.Add("user_friends");
FB.LogInWithReadPermissions(permissions, authCallBack);
}
void authCallBack(IResult result)
{
if (result.Error != null)
{
Debug.Log(result.Error);
}
else
{
if (FB.IsLoggedIn)
{
Debug.Log("logged in");
AccessToken token = AccessToken.CurrentAccessToken;
Credential credential = FacebookAuthProvider.GetCredential(token.TokenString);
accessToken(credential);
}
else
Debug.Log("not logged in");
}
}
public void accessToken(Credential firebaseResult)
{
FirebaseAuth auth = FirebaseAuth.DefaultInstance;
if (FB.IsLoggedIn)
return;
auth.SignInWithCredentialAsync(firebaseResult).ContinueWith(task =>
{
if (task.IsCanceled)
{
Debug.LogError("SignInWithCredentialAsync was canceled.");
return;
}
if (task.IsFaulted)
{
Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
return;
}
FirebaseUser newUser = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
newUser.DisplayName, newUser.UserId);
});
}
}
1 ответ
Да, это стандартный экран тестирования. Вы можете получить тестовый токен на своей странице разработчика в Facebook (Роли-> Тестовый пользователь-> Нажмите на кнопку Изменить-> Получить токен доступа для этого пользователя). Подобный токен генерируется каждый раз, когда ваше приложение подключается к вашему приложению Facebook. Обычно это недолговечный токен, около 2 часов, поэтому вам не нужно его сохранять.