Для начала я работаю над игрой Unity, где я аутентифицирую пользователя при запуске игры. Моя среда сборки android. Я использую аутентификацию Firebase для Google Play Games Services для аутентификации пользователя.
Когда игра запускается на моем устройстве или эмуляторе android, она может аутентифицировать Play Games Services, а также подключаться к Firebase (я получаю аналитические данные). Однако, когда я передаю код авторизации PlayGames в учетные данные Firebase.Auth, он перестает выполнять код (для этого у меня есть журнал отладки). В LogCat не выдается никакой ошибки, кроме
Firebase | server_auth_code
Я пытался искать в Интернете различные проблемы, но ничего. Я проверил свои ключи в настройках плеера, настройках firebase, учетных данных OAuth 2.0 на консоли Google API и даже проверил ключи в моей консоли Google Play (которую я не использую на данном этапе). Я даже проверил адреса электронной почты моих тестовых пользователей в игровых сервисах и попробовал несколько аккаунтов в Google Play. Но проблема все еще сохраняется.
Я использую аналогичный сценарий в моем другом проекте Unity, где аутентификация работает как чудо. Я попытался использовать тот же сценарий здесь и в конечном итоге с этой проблемой: здесь . Однако я решил это, удалив все пакеты и повторно импортировав их в целое, и изменил мои функции вызова в скрипте. Теперь я застрял в этой проблеме. Вот файл cs:
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine.SocialPlatforms;
using System.Threading.Tasks;
public class SetFirebase : MonoBehaviour
{
string authCode;
void Start()
{
PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().
RequestServerAuthCode(false /* Don't force refresh */).Build();
PlayGamesPlatform.InitializeInstance(config);
PlayGamesPlatform.Activate();
Social.localUser.Authenticate((bool success) =>
{
if (success)
{
authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
Debug.Log("PlayGames successfully authenticated!");
Debug.Log("AuthCode: " + authCode);
}
else
{
Debug.Log("PlayGames SignIn Failed");
}
});
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
{
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available)
{
Debug.Log("Firebase Ready!!!");
RunFirebase();
}
else
{
Debug.LogError(System.String.Format("Could not resolve all Firebase dependencies: {0}", dependencyStatus));
}
});
}
private void RunFirebase(){
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Debug.Log("init firebase auth ");
Firebase.Auth.Credential credential = Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode);
Debug.Log(" passed auth code ");
auth.SignInWithCredentialAsync(credential).ContinueWith(task =>
{
if (task.IsCanceled)
{
Debug.LogError("SignInOnClick was canceled.");
return;
}
if (task.IsFaulted)
{
Debug.LogError("SignInOnClick encountered an error: " + task.Exception);
return;
}
Firebase.Auth.FirebaseUser newUser = task.Result;
Debug.LogFormat("SignInOnClick: User signed in successfully: {0} ({1})", newUser.DisplayName, newUser.UserId);
});
}
}
Мой LogCat выполняет все до "initb firebase auth" , но не выполняет "переданный код авторизации" , так что я знаю, что есть некоторая проблема при передаче полномочий. Он также не запускает ничего внутри auth.SignInWithCredentialAsyn c (учетные данные) .
Любая помощь или предложение будут высоко оценены. Спасибо.