适用于 Android 的 Google 登录 - 发布与调试

Posted

技术标签:

【中文标题】适用于 Android 的 Google 登录 - 发布与调试【英文标题】:Google Sign in for Android - Release vs Debug 【发布时间】:2017-05-02 20:11:54 【问题描述】:

所以目前,我正在尝试实现 google 登录 .. 我已按照 developer.android.com 上的说明进行操作 .. 我遇到了一个奇怪的问题,我看到有几个人在 SO 上谈论这个,但它从来没有得到任何地方,所以我在这里发布...

生成签名的 apk 后,我可以使用 google 登录;如果我不遵循该方法,我将无法使用谷歌登录(即,如果我将手机插入并在 android studio 上运行,谷歌登录会告诉我我的请求结果不成功)

我的问题是 1) 这里到底发生了什么?和2)我如何使用谷歌登录而不需要每次都生成一个签名的apk ..

更新

我相信这是因为 SHA-1 哈希函数要么在调试密钥库上运行,要么在发行版上运行......

【问题讨论】:

是的,你可以在没有签名的 apk 的情况下做到这一点 【参考方案1】:

签署您的 apk 后,使用您签署的 SHA1 来使用谷歌服务..如 gmail 登录..

所以您的调试 SHA1 将无法工作..在这种情况下。

回答您的第一个问题..我认为您的 OAuth 2.0 客户端 ID SHA1 用于发布版本。所以在调试模式下它不起作用

你的第二个问题是的,你可以使用谷歌登录,而无需每次都生成签名的 apk。

为此首先找到您的调试 SHA1

    单击视图右侧的 Gradle 选项卡。 进入ROOT文件夹->任务->android->signingReport 双击,这将与签名报告一起构建并在您的底部视图中发布您的 SHA1。

现在去

    https://console.developers.google.com

    选择左侧的凭据选项卡

    选择底部的 OAuth 2.0 客户端 ID 并选择 Android 客户端 1

    现在将版本 SHA1 更改为您的调试 SHA1 并保存 现在您的 google 登录也可以在调试模式下工作。

注意:在构建 apk 期间,将您的构建变体从发布更改为调试

在发布期间,您必须在 OAuth2.0 中替换回您的发布版 SHA1

【讨论】:

感谢您回答这个问题!我实际上能够将两个 SHA1 哈希值放在开发人员控制台 api 页面中......更进一步......因为我已经设置了 firebase 并链接到 API 项目,所以我不必创建 OAuth 客户端 ID,只需要给 firebase 两个 SHA1 哈希值 @Arjun 您是否仅通过创建第二个 OAuth 客户端 ID 来实现这一点?

以上是关于适用于 Android 的 Google 登录 - 发布与调试的主要内容,如果未能解决你的问题,请参考以下文章

适用于多个开发人员的 Google 登录配置文件

如何在 Unity3D 上显示适用于 Android 的 Google Play 游戏“欢迎回来”吐司?

Flutter Web:google_sign_in_web:适用于桌面和 iOS。在 Android Chrome 上失败

适用于 iOS 的 Google+ SDK 以编程方式添加登录按钮

适用于 Android 的 Google Places API 未显示

适用于 Android 的 Google+ 平台 - NoClassDefFoundError:com.google.android.gms.samples.plus.SignInActivity