Google signin 引发的崩溃(人)

崩溃的前提是确实经验不足. 不管怎么说, 还是分享一下.

设计到的 Google 的产品有:

  • Google Play Console
  • Firebase
  • Google Cloud Platform

反正每个地方都有说明, 但是又感觉没有说一样, 至少关联关系 / 该填什么来自何方 都没有找到说明.

废话不多说, 只说关键的 / 隐晦的配置.

(提供账号这货设置的是中文, 导致中英文杂乱, 反正我看到什么就写什么, 和截图保持一致)

1. Firebase 中的配置和注意点

创建 APP, 基本配置什么的都不啰嗦的, 正常操作就不会有问题.

Google signin 引发的崩溃(人)_第1张图片开通 Google 授权登录, 这里的 web 客户端 ID 留意一下, 在后面很多地方都会有:

  • google-service.json
  • Google Cloud Platform --> 凭据
  • google auth Android 的client id

Google signin 引发的崩溃(人)_第2张图片项目设置里面主要有两个要说一下:

  1. SHA 整数指纹, 把 Google Play Console 里面的 应用签名密钥证书上传密钥证书 里面的 SHA1 都添加进来.

  2. 支持电子邮件地址, 这个是有可能会被用户看到的, 如果一不小心选择一个, 想改发现改不了, 需要以下操作(有点绕, 反正就是要这样才可以):

    2.1 项目设置 --> 用户和权限
    2.2 添加一个成员, 发送验证邮件
    2.3 使用添加的成员登录, 再回到项目设置, 可以设置 支持电子邮件地址 为当前用户.

2. Google Cloud Platform 中的配置和注意点

在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/64e39ef60b2642c680682212aa416b50.png
Google signin 引发的崩溃(人)_第3张图片在左上角点击 项目, 然后 全部 选项卡应该是可以看到有一个和 Firebase 对应的一个项目, 选择它.

Google signin 引发的崩溃(人)_第4张图片点击左上角的菜单 --> API 和服务 --> OAuth 同意屏幕

在这里主要做以下几件事:

  1. 上传给用户展示的信息: 图标, 应用名称, Email等
  2. 选择使用的API, 选择使用的 API
  3. 设置成生产环境

没有太多注意的地方, 但是如果在app出现 Google hasn't verified this app, 八成就是和这里有管了. 例如我这里只用到了 获取用户的 email/profile/openid 这三个不需要验证的 API, 所以审核不审核无所谓.

如果这里处理好了(如果不需要验证, 那就是处理好了, 如果用到受限制的 API 这里要选择/说明/审核), 排除这里的问题, 还是遇到了这个警告, 那基本就是因为 APP 调用了这里你选择以外的API了, 检查代码.

Google signin 引发的崩溃(人)_第5张图片
点击菜单 “凭据”, 看到:

Google signin 引发的崩溃(人)_第6张图片基本都是自动生成的, Android 选择那个 Client ID 呢, 有三个地方都可以获取:

  1. Google Cloud Platform --> API 和服务 --> 凭据 - 选择 web的, 这里web有两个, 都可以, 一个有弹框, 一个没有
  2. 可以看 Firebase 里设置, 上面有说, 也圈出来了
  3. google-service.json里面的 other_platform_oauth_client --> "client_type": 3 对应的那个.

有一个很关键的地方, 如果你发现什么都做对了, 打包的 .apk 包也没问题, 但是上了 Google Play 就是不行, 我得到的错误是 auth/unknown, 这就难查了, 在 凭据 --> API 密钥 --> Android Key 点击修改, 里面填写自己APP 的 package name 和 SHA1, 这里的 SHA1 就是要重点关注的, 要填写 Google Play Console 里面的 应用签名密钥整数 里面的 SHA1. 自己的 .keystore 的也要填写一下, 要不然 .apk 也会有同样的错误.

上商店前, 填写了自己的, 上了商店发现授权失败了, 提示的错误也是很隐晦, 没有明确的说明(按照上面说的就对了):

  • error code: auth/unknown
  • An internal error has occurred. [ Requests from this Android client application xxx.xxx.xxx are blocked. ]

3. Google Play Console 中的配置和注意点

选择某个应用后, 点击菜单: “设置 --> 应用完整性” , 里面有两个选项卡:

  • Integrity API
  • 应用签名
    Google signin 引发的崩溃(人)_第7张图片

1. Integrity API

Integrity API 要关联一个 Google Cloud Platform 的对应的项目.

2. 应用签名

在 Google Play Console 上传了 APP 后 (只上传密钥文件可能也行, 反正我是直接上传了APP才发现的), 在 应用签名 中会有两个密钥:

  • 应用签名密钥证书
  • 上传密钥证书

上传密钥证书就是自己项目里面的那个 .keystore.

应用签名密钥整数 是 Google Play 生成的.

还有一个容易遗漏的点, 注意了可以节约点时间:

如果应用要账号才可以使用, 则需要提供账号供审核使用(iOS 也是一样), 如果忘了, 会被打回重新提交审核, 浪费时间.

在 应用内容 --> 应用访问权限, 点击管理 提供一个测试账号.
Google signin 引发的崩溃(人)_第8张图片

Facebook 有同样类似的问题

Facebook 授权登录, 开发的时候验证可以, 但是上了 Google Play 就不行了.

根据 Google 授权登录的经验, 立马就想到, 肯定是证书的问题. Google Play 商店生成了商店的证书, 而 Facebook 中设置的 Key Hashes

尝试下载了 Google Play 的证书, 并且添加到了自己的证书里面:

keytool -import -file ./deployment_cert.der -keystore ./my-upload-key.keystore
keytool -list -v -keystore ./my-upload-key.keystore -alias my-key-alias -storepass xxxxx_storepass_xxxx -keypass xxxxx_keypass_xxxx

查看 Key Hash:

keytool -exportcert -alias my-key-alias -keystore ./my-upload-key.keystore | openssl sha1 -binary | openssl base64

发现和之前的并没有变化.

真正的解决方法是用以下命令生成一个 Key Hash, 并添加到 Facebook Login 中 Android 的 Key Hashes 中:

keytool -exportcert -keystore ./my-upload-key.keystore | openssl sha1 -binary | openssl base64

唯一的区别是没有了 -alias 参数.
Key Hashes 可以添加多个 Hash, 保险起见, 两个 Key Hashes 都添加就完事了.

keytool -exportcert -alias my-key-alias -keystore ./my-upload-key.keystore | openssl sha1 -binary | openssl base64

keytool -exportcert -keystore ./my-upload-key.keystore | openssl sha1 -binary | openssl base64

Facebook 的文档中是有 -alias 参数的, 一直没有怀疑这个参数的问题, 结果不要这个参数就可以了.
Google signin 引发的崩溃(人)_第9张图片

你可能感兴趣的:(React,APP,react,native,android)