c# - 使用 Firebase 匿名登录时,ProviderData 为空
问题描述
正如标题所说,使用 Firebase 匿名登录(Unity SDK 6.14.1)时,ProviderData 为空。
首先,我使用它来创建/登录匿名用户:
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
auth.SignInAnonymouslyAsync().ContinueWith(task =>
{
//this succeeds
[insert Code1 you see below here]
}
然后,我使用 (Code1) 将此帐户与 Facebook 相关联:
var credential = Firebase.Auth.FacebookAuthProvider.GetCredential(AccessToken.CurrentAccessToken.TokenString);
auth.CurrentUser.LinkWithCredentialAsync(credential).ContinueWith(task2 =>
{
//this succeeds as well
}
但是,task2.Result
(这是一个FirebaseUser
-object)例如不包含 DisplayName 和其他信息。现在也是实际问题:
当我现在重新启动应用程序并auth.SignInAnonymouslyAsync()
再次调用时,我是否应该期望响应 ( task.Result
) 包含 ProviderData 字段以了解此用户已链接哪些提供程序?因为现在,如果我在启动时登录用户,就像我刚才描述的那样,ProviderData 在 Unity 编辑器中是空的,并且只在 Android 设备上返回 Firebase。
我很难理解这是否是有意的行为,我应该尝试使用 Facebook 登录而不是保持匿名登录?但如果是这种情况,如果用户连接到 Facebook,我必须手动保存,这似乎非常错误。
我发现这个错误报告似乎是相同/相似的问题,但很久以前就解决了:https ://github.com/firebase/quickstart-unity/issues/467
有人可以告诉我我在这里采取了错误的方法还是这确实是一个错误?
解决方案
我的第一个问题是,一个 FirebaseUser 应该有多个PoviderDatas (as an enumerable)。您是说该字段ProviderData
是null
,您有一个包含多个null
值的数组,还是第一个是null
?
我的第二个问题,可能是一个答案,如果这感觉有点傲慢,我深表歉意,但我想彻底:你是auth.SignInAnonymouslyAsync()
每次游戏运行时都打电话还是只有在auth.CurrentUser == null
?
auth.SignInAnonymouslyAsync()
即使他们已经登录,也将始终创建一个新用户(这与任何设备标识符无关,因此一旦您退出匿名用户,您将永远无法再次以他们的身份登录)。如果您不考虑它,这可能会影响您的测试,但如果这不是新信息,我深表歉意!
——帕特里克
推荐阅读
- git - git filter-branch empty ident name (for <>) 不允许
- jackson - 如何从 REST 端点捕获 JsonParseException
- ios - textFieldDidEndEditing 在表格视图中不起作用
- r - 带有 R 的飞行路线传单的不同颜色
- sitemap - 谷歌搜索控制台“链接自”过时的站点地图
- linux - 列出 linux 中当前正在运行的应用程序
- ios - 如何在滑块上添加点?
- python - 如何将单个元素和元组压缩成一个元组?
- react-native - Expo MediaLibrary 中可能出现未经处理的拒绝
- intellij-idea - 在 Ubuntu 上的 IntelliJ Idea 中损坏了我的 zshell