首页 > 解决方案 > Firebase C++ SDK 和 Google 身份验证

问题描述

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

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

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

标签: c++firebasefirebase-authentication

解决方案


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

基本上,如果您想使用联合登录,例如FacebookGoogleTwitter,那么您将需要使用为您使用的任何平台构建的 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,然后对后端进行安全的服务器调用。有一个获取短信来验证用户的流程,而不是我会为游戏做的事情。


推荐阅读