c++ - Firebase C++ SDK 和 Google 身份验证
问题描述
如何使用 Firebase 身份验证允许用户通过 C++ SDK 使用 Google 帐户进行身份验证(在 Cocos2d-x 中使用它)。
我很困惑我是否需要构建一个特殊的 Google auth GUI,或者 SDK 是否需要/包含一个应该使用的标准化 GUI(或者,对于 Cocos2d-x,一个场景)。
无论哪种方式,我都不确定该怎么做。有谁知道如何进行?SDK 示例代码显示了如何通过电子邮件/密码而不是通过 Google 帐户进行身份验证。
解决方案
好的,所以这很复杂,但不是因为 Firebase。
基本上,如果您想使用联合登录,例如Facebook、Google、Twitter,那么您将需要使用为您使用的任何平台构建的 UI SDK。当您使用其中一项服务成功登录时,您将使用token
从其中一项服务返回的凭证构造一个凭证。
使用此凭据登录后,Firebase 身份验证服务会将任何帐户数据与此联合登录相关联。如果您以前使用匿名登录,则应升级该帐户。如果您已经使用另一个凭据(电子邮件、电话号码、替代联合登录)登录,那么您将需要执行一些逻辑来检查您是否需要合并或切换。
Firebase 身份验证可以比联合令牌更长寿。例如,Facebook 登录令牌过期或被撤销,您的 Firebase 身份验证后端可能保持登录状态。反之亦然,您的 Facebook 令牌可能不会过期,但您的 Firebase 身份验证可能已注销。您将需要管理这些状态。
这是一个例子。我们想使用 Facebook 登录作为我们的联合登录提供程序。我们为我们的平台链接 Facebook 登录 SDK,如Facebook 开发者文档中所述。
当我们想要获取 Facebook 登录凭据时,我们使用 FBSDKLoginManager .loginwithReadPermissions() 来启动登录流程。这通常包括启动 Facebook 应用程序以确认您的应用程序或网站的权限(确保按照 Facebook 文档中的说明正确实施深层链接)。
最终,登录将成功或失败。
如果成功,Facebook 会给你一个令牌,你可以从中获取[FBSDKAccessToken currentAccessToken].tokenString
。这就是您要发送的内容firebase::auth::FacebookAuthProvider::GetCredential
所有这些都是异步的,并且在单独的线程上完成。您应该使用并发队列将这些事件汇集到您的主线程。
可以使用自己的服务器和注册表单,在这种情况下,您将在游戏中构建自己的 UI,然后对后端进行安全的服务器调用。有一个获取短信来验证用户的流程,而不是我会为游戏做的事情。
推荐阅读
- php - 为什么在 Controller 中选择 FormRequest 授权而不是 Policies/Gates?
- python - 修改列表中字典的值,更改列表中所有字典中的所有值
- c++ - Magick++ API:获取 PDF 页数?
- python - 加载 cog 时执行函数
- php - 我的存储假货没有将图像存储在测试目录中
- python - Selenium - 元素不可交互
- pandas - Pandas to_excel() UTF-8 错误(已禁用保存)
- nginx - sudo certbot delete 创建的错误
- python - 等待 DM 中的反应 discord.py
- python - 为什么我的结果打印带有字符 [?