如何检查Firebase Facebook用户是否存在-Unity

时间:2018-10-27 22:43:51

标签: firebase unity3d firebase-authentication facebook-login unityscript

我想检查用户在使用Facebook登录时是否已经存在于Firebase中,或者这是他们第一次登录。 Firebase文档仅提供了登录Facebook的功能,没有提及用户是否是新用户。新用户将获得新的firebase用户ID,而现有用户只需登录。

在这里阅读其他类似的问题-有些人建议对Javascript使用AdditionalUserInfo.isNewUser,但此功能不适用于Unity代码。这里没什么关于Unity的。

基本代码行(登录到Facebook后)

Firebase.Auth.Credential credential =
Firebase.Auth.FacebookAuthProvider.GetCredential(accessToken);
auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("SignInWithCredentialAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("SignInWithCredentialAsync encountered an error: " + 
task.Exception);
return;
}

Firebase.Auth.FirebaseUser newUser = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
newUser.DisplayName, newUser.UserId);
});

我正在考虑的一种解决方案是捕获异常-但在他们的文档中找不到异常代码-Firebase那里没有太多有关Unity的信息

1 个答案:

答案 0 :(得分:0)

这是可以帮助您的简短代码。

public FirebaseAuth auth;

auth.FetchProvidersForEmailAsync(emailGotFromFacebook).ContinueWith((emailCheckingTask) =>
{
    List<string> allProviders = ((IEnumerable<string>)emailCheckingTask.Result).ToList();

    for (int i = 0; i < allProviders.Count; i++)
    {
        string provider = allProviders[i];
        Debug.Log(provider);
    }
});