Firebase Unity Facebook не возвращает / не сохраняет электронную почту - PullRequest
0 голосов
/ 29 апреля 2020

Я использую Firebase, чтобы позволить пользователю войти в игру Unity через Facebook. Он работает нормально, но я не могу получить доступ к электронной почте пользователя с помощью этого параметра auth.CurrentUser.Email. Кроме того, электронная почта не сохраняется в консоли аутентификации Firebase. Электронная почта может быть сохранена / доступна, когда я использую другие методы входа, такие как электронная почта и Google.

Вот мой код:

    public void SignInFacebook()
    {
        var perms = new List<string>() { "public_profile", "email", "user_friends" };
        FB.LogInWithReadPermissions(perms, AuthCallback);
    }

    private void AuthCallback(ILoginResult result)
    {
        if (FB.IsLoggedIn)
        {
            // AccessToken class will have session details
            var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
            // Print current access token's User ID
            Debug.Log(aToken.UserId);
            // Print current access token's granted permissions
            foreach (string perm in aToken.Permissions)
            {
                Debug.Log(perm);
            }

            Credential credential = FacebookAuthProvider.GetCredential(aToken.TokenString);
                auth.SignInWithCredentialAsync(credential).ContinueWithOnMainThread(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} - {2} - ({1})",
                        newUser.DisplayName, newUser.UserId, newUser.Email);
                });
        }
        else
        {
            Debug.Log("User cancelled login");
        }
    }

И вот как это выглядит в консоли («-» - это место, где предполагается хранить электронную почту. Если я использую другой метод входа, например, электронную почту или Google, электронная почта сохраняется без каких-либо проблем)

enter image description here

Аналогичные вопросы были заданы по этой проблеме, и было предложено изменить настройку Адрес электронной почты учетной записи в Firebase на Запретить создание нескольких учетных записей с одной и той же учетной записью. адрес электронной почты , но это не решило проблему.

Спасибо!

1 Ответ

0 голосов
/ 11 мая 2020

Вы можете попробовать это

private void FacebookAuthCallback(ILoginResult result)
{
    if (FB.IsLoggedIn)
    {
        FB.API("/me?fields=id,name,email", HttpMethod.GET, FacebookGetInfo);
    }
    else
    {
        Debug.Log("User cancelled login");
    }
}

private void FacebookGetInfo(IResult result)
{
    if (result.Error == null)
    {
        if (result.ResultDictionary.ContainsKey("email"))
        {
            string aEmail = result.ResultDictionary["email"].ToString();
            return;
        }
    }
    else
    {
        Debug.Log(result.Error);
    }
}
...