【问题标题】:Firebase C++ SDK and Google AuthFirebase C++ SDK 和 Google 身份验证
【发布时间】:2018-05-14 17:03:10
【问题描述】:

如何使用 Firebase 身份验证允许用户通过 C++ SDK(在 Cocos2d-x 中使用它)使用 Google 帐户进行身份验证。

我很困惑是否需要构建一个特殊的 Google auth GUI,或者 SDK 是否需要/包含一个应该使用的标准化 GUI(或者,对于 Cocos2d-x,一个场景)。

无论哪种方式,我都不确定该怎么做。有谁知道如何进行? SDK 示例代码显示了如何通过电子邮件/密码而不是通过 Google 帐户进行身份验证。

【问题讨论】:

    标签: c++ firebase firebase-authentication


    【解决方案1】:

    好的,这很复杂,但不是因为 Firebase。

    基本上,如果您想使用联合登录,例如FacebookGoogleTwitter,那么您将需要使用他们为您所使用的任何平台构建的 UI SDK。当您使用其中一项服务成功登录时,您将使用从其中一项服务返回的token 构造一个凭据。

    在您使用此凭据登录后,Firebase 身份验证服务会将所有帐户数据与此联合登录相关联。如果您以前使用匿名登录,则应升级该帐户。如果您已经使用其他凭据(电子邮件、电话号码、替代联合登录)登录,那么您需要执行一些逻辑来检查是否需要合并或切换。

    Firebase 身份验证的寿命比联合令牌长。例如,Facebook 登录令牌过期或被撤销,您的 Firebase 身份验证后端可能保持登录状态。反之亦然,您的 Facebook 令牌可能不会过期,但您的 Firebase 身份验证可能已注销。您将需要管理这些状态。


    这是一个例子。我们想使用 Facebook 登录作为我们的联合登录提供程序。如Facebook Developer docs 中所述,我们为我们的平台链接 Facebook 登录 SDK。

    当我们想要询问 Facebook 登录凭据时,我们使用 FBSDKLoginManager .loginwithReadPermissions() 来启动登录流程。这通常包括启动 Facebook 应用以确认您的应用或网站的权限(确保按照 Facebook 文档中的说明正确实施深层链接)。

    最终,登录将成功或失败。

    如果成功,Facebook 会给你一个令牌,你可以从[FBSDKAccessToken currentAccessToken].tokenString 获取。这就是你要发送到firebase::auth::FacebookAuthProvider::GetCredential


    所有这些都是异步的,并且在单独的线程上完成。您应该使用并发队列将这些事件汇集到您的主线程。

    可以使用您自己的服务器和注册表单,在这种情况下,您可以在游戏中构建自己的 UI,然后对您的后端进行安全的服务器调用。有一个获取短信验证用户的流程,而不是我会为游戏做的事情。

    【讨论】:

    • 我找不到如何在 C++ SDK 中实例化 Google UI 以进行身份​​验证。对于 Facebook,您提到了 FBSDKLoginManager .loginwithReadPermissions()。谷歌身份验证有类似的东西吗?
    • 另外,您没有启动 Google、Twitter、Facebook 等。从 C++ SDK 登录 UI,您是从该特定 SDK 进行的。如果您使用的是 Cocos2d-X,那么应该有插件或示例如何在他们的论坛中集成这些 SDK。
    猜你喜欢
    • 2019-05-20
    • 2020-01-23
    • 2015-05-10
    • 2016-09-26
    • 2022-01-11
    • 2021-03-22
    • 2020-03-31
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多