android - Unity - 将 Firebase 与 Facebook 登录一起使用时,SignInWithCredentialAsync 会导致内部错误
问题描述
我是一名 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。
任何人都可以帮忙吗?
PS这是昨天提出的另一个问题,我不知道它是否相关。 未找到 FirebaseAuthWebException。请验证 AAR
解决方案
哦,我犯了一个愚蠢的错误!
在 Facebook 开发者页面中,设置 > 基本中有 App Secret。并且必须使用 App ID 将其添加到 Firebase 控制台中。现在没问题。接着......
我只是复制了 App Secret 而没有显示并粘贴到 Firebase 控制台中。
这意味着我在 Firebase 控制台中设置了 8 个黑点 (●●●●●●●●) 作为我的 App Secret。我知道这太傻了。但以防万一有人像我这样粗心。
推荐阅读
- agora.io - 在群聊的远程视频上显示用户名,群聊的举手功能
- java - 一台服务器上的多个 ehcache 会互相污染吗?
- apache-camel - 使用数据库在集群中运行的 Apache Camel 单个路由实例
- assembly - 翻转时两个无符号变量之间的差异
- google-sheets - 公共只读 Google Sheets API 的最低权限 API 密钥配置是什么?
- bash - 使用 pandoc 将 epub/pdf(和其他文本文件)的目录转换为 .txt
- rust - 不应该弧
为任何 T 实现克隆? - excel - NIFI excel文件
- python-3.x - 我不能让python检查一个单词是否在字符串列表中
- mongodb - mongodb服务器可以重启但是状态报错