我是Unity程序员,正在使用Firebase来管理用户帐户。我试图设置Facebook登录名。 Facebook sdk没问题,我可以成功登录。但是,当将Facebook sdk返回的凭据用作 FirebaseAuth.DefaultInstance.SignInWithCredentialAsync 的参数时,它将返回内部错误。
这是我的代码:
void authCallBack(IResult result) {
if (result.Error != null) {
Debug.Log(result.Error);
}
else {
if (FB.IsLoggedIn) {
Debug.Log("Log in successfully.");
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;
Debug.Log("Auth CurrentUser: " + FirebaseAuth.DefaultInstance.CurrentUser);
if (!FB.IsLoggedIn){
return;
}
if (auth.CurrentUser != null && !string.IsNullOrEmpty(auth.CurrentUser.UserId)){
Debug.Log("CurrentUser ID: " + auth.CurrentUser.UserId);
auth.CurrentUser.LinkAndRetrieveDataWithCredentialAsync(firebaseResult).ContinueWith(task =>
{
if (task.IsCanceled || task.IsFaulted)
{
Debug.LogError("LinkWithCredentialAsync encountered an error: " + task.Exception);
// TODO: Show error message to player
return;
}
FirebaseUser newUser = task.Result.User;
Debug.LogFormat("Credentials successfully linked to Firebase user: {0} ({1})",
newUser.DisplayName, newUser.UserId);
});
} else {
auth.SignInWithCredentialAsync(firebaseResult).ContinueWith(task =>
{
if (task.IsCanceled || task.IsFaulted) {
Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception.InnerExceptions[0].Message);
// TODO: Show error message to player
return;
}
FirebaseUser newUser = task.Result;
Debug.LogFormat("Credentials successfully created Firebase user: {0} ({1})",
newUser.DisplayName, newUser.UserId);
});
}
}
VS调试中的更多详细信息:
当我在Android设备上对其进行测试时,它只会显示一条错误消息 g_methods_cached 。
有人可以帮忙吗?
P.S。这是昨天又问的另一个问题,我不知道是否相关。 FirebaseAuthWebException not found. Please verify the AAR
答案 0 :(得分:0)
哦,我犯了一个愚蠢的错误!
在Facebook Developer页面中,“设置”>“基本”中有“应用程序机密”。并且必须使用App ID将其添加到Firebase控制台。现在没问题。然后……
我只是复制了“应用秘密”,没有显示并粘贴到Firebase控制台中。
这意味着我在Firebase控制台中将8个黑点(●●●●●●●●)设置为我的应用程序密码。我知道这太傻了。但是以防万一有人像我这样粗心。