Аутентификация входа в Firebase Google не работает в игре Unity, а пользователи, вошедшие в систему Google, не отображаюC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Аутентификация входа в Firebase Google не работает в игре Unity, а пользователи, вошедшие в систему Google, не отображаю

Сообщение Гость »


Аутентификация входа в Firebase Google не работает в моей игре Unity, и пользователи, выполнившие вход в Google, не отображаются в базе данных Firebase в реальном времени. При нажатии кнопки входа в Google вызывается метод SignInWithGoogle() и отображается текст «Вызов SignIn» там, где на экране находится infoText. Однако фактического входа в Google не происходит, и пользователи не видны на консоли Firebase. Кажется, я не могу решить эту проблему, несмотря на то, что просмотрел документацию и убедился, что использую правильный идентификатор веб-клиента. Кроме того, я уже включил Google в разделе аутентификации Firebase. Пожалуйста, помогите мне.
Ниже мой код:

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Firebase;
using Firebase.Auth;
using Google;
using UnityEngine;
using UnityEngine.UI;

public class GoogleSignInDemo : MonoBehaviour
{
public Text infoText;
public string webClientId = "aaaaaakaakaksjaaa.apps.googleusercontent.com";

private FirebaseAuth auth;
private GoogleSignInConfiguration configuration;

public GameObject googleSignInButton, anonymousSignInButton;
public GameObject logoutButton;

private void Awake()
{
configuration = new GoogleSignInConfiguration { WebClientId = webClientId, RequestEmail = true, RequestIdToken = true };
CheckFirebaseDependencies();
CheckSignInStatus(); // Check sign-in status on awake
}

private void CheckSignInStatus()
{
if (auth.CurrentUser != null)
{
// User is already signed in
googleSignInButton.SetActive(false);
anonymousSignInButton.SetActive(false);
logoutButton.SetActive(true);
LoadGemsCountForCurrentUser();
}
else
{
// User is not signed in
googleSignInButton.SetActive(true);
anonymousSignInButton.SetActive(true);
logoutButton.SetActive(false);
}
}

private void LoadGemsCountForCurrentUser()
{
if (auth.CurrentUser != null)
{
// Load gems count for the current user from the cloud
DiamondManager.instance.LoadGemsCountFromCloud();
}
}

private void CheckFirebaseDependencies()
{
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
{
if (task.IsCompleted)
{
if (task.Result == DependencyStatus.Available)
auth = FirebaseAuth.DefaultInstance;
else
AddToInformation("Could not resolve all Firebase dependencies: " + task.Result.ToString());
}
else
{
AddToInformation("Dependency check was not completed.  Ошибка: " + Task.Exception.Message);
 });

public void SignInWithGoogle()
{
OnSignIn();

public void SignOutFromGoogle()
{
OnSignOut();

public void OnSignIn()
{
GoogleSignIn.Configuration = конфигурация;
GoogleSignIn.Configuration.UseGameSignIn = false;
GoogleSignIn.Configuration.RequestIdToken = true;
AddToInformation("Вызов SignIn");

GoogleSignIn.DefaultInstance.SignIn().ContinueWith(OnAuthenticationFinished);

Private void OnSignOut()
{
AddToInformation("Вызов SignOut");
GoogleSignIn.DefaultInstance.SignOut();

auth.SignOut();

googleSignInButton.SetActive(true) ;
anonymSignInButton.SetActive(true);
}

//обработка процесса выхода как для Google, так и для анонимного входа
public void SignOut()
{
if (GoogleSignIn.DefaultInstance != null)
{
GoogleSignIn.DefaultInstance.SignOut();
 if (auth.CurrentUser != null )
{
auth.SignOut();
 CheckSignInStatus(); // Обновляем пользовательский интерфейс после выхода из системы


Internal void OnAuthenticationFinished(Task Task)
{
if ( Task.IsFaulted)
{
using (IEnumerator enumerator = Task.Exception.InnerExceptions.GetEnumerator())
{
if (enumerator.MoveNext())
{
Ошибка GoogleSignIn.SignInException = (GoogleSignIn.SignInException)enumerator.Current;
AddToInformation("Получена ошибка: " + error.Message);
Debug.Log(error);< br />  else
{
AddToInformation("Получено неожиданное исключение?!?" + Task.Exception);
   else if (task.IsCanceled)
{
AddToInformation("Canceled");
 else
{
googleSignInButton.SetActive(false );
anonymSignInButton.SetActive(false);
AddToInformation("Добро пожаловать: " + Task.Result.DisplayName + "!");
AddToInformation("Email = " + Task.Result. Электронная почта);
AddToInformation("Токен идентификатора Google = " + Task.Result.IdToken);
AddToInformation("Email = " + Task.Result.Email);
SignInWithGoogleOnFirebase(task.Result) .IdToken);
 
частная асинхронная задача SignInWithGoogleOnFirebase(string idToken)
{
if (string.IsNullOrEmpty(idToken))
{
AddToInformation("Токен идентификатора Google имеет значение NULL или пуст.");
return;

Credential credential = GoogleAuthProvider.GetCredential(idToken, null );

await auth.SignInWithCredentialAsync(credential).ContinueWith(HandleLoginResult);

await DiamondManager.instance.LoadGemsCountFromCloud();

} br />
Private async void HandleLoginResult(Task Task)
{
if (task.IsCanceled)
{
Debug.LogError("SignInWithCredentialAsync был отменен .");
return;
 if (task.IsFaulted)
{
Debug.LogError("SignInWithCredentialAsync обнаружила ошибку: " + Task.Exception. InnerException.Message);
return;
}

FirebaseUser newUser = Task.Result;
Debug.Log($"Пользователь успешно вошел в систему: {newUser.DisplayName } ({newUser.UserId})");
}

Private List messages = new List();

void AddToInformation(string text)
{
if (messages.Count == 5)
{
messages.RemoveAt(0);
 messages.Add(text);
string txt = "";
foreach (строка s в сообщениях)
{
txt += "\n" + s;
 infoText.text = txt;


}
I для работы требуется вход в Google и отображение пользователей в консоли Firebase.


Источник: https://stackoverflow.com/questions/781 ... oogle-sign
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»