崩溃的前提是确实经验不足. 不管怎么说, 还是分享一下.
设计到的 Google 的产品有:
- Google Play Console
- Firebase
- Google Cloud Platform
反正每个地方都有说明, 但是又感觉没有说一样, 至少关联关系 / 该填什么来自何方 都没有找到说明.
废话不多说, 只说关键的 / 隐晦的配置.
(提供账号这货设置的是中文, 导致中英文杂乱, 反正我看到什么就写什么, 和截图保持一致)
1. Firebase 中的配置和注意点
创建 APP, 基本配置什么的都不啰嗦的, 正常操作就不会有问题.
开通 Google 授权登录, 这里的 web 客户端 ID 留意一下, 在后面很多地方都会有:
- google-service.json
- Google Cloud Platform --> 凭据
- google auth Android 的client id
项目设置里面主要有两个要说一下:
- SHA 整数指纹, 把 Google Play Console 里面的
应用签名密钥证书
和上传密钥证书
里面的 SHA1 都添加进来. - 支持电子邮件地址, 这个是有可能会被用户看到的, 如果一不小心选择一个, 想改发现改不了, 需要以下操作(有点绕, 反正就是要这样才可以):
2.1 项目设置 --> 用户和权限
2.2 添加一个成员, 发送验证邮件
2.3 使用添加的成员登录, 再回到项目设置, 可以设置 支持电子邮件地址 为当前用户.
2. Google Cloud Platform 中的配置和注意点
在左上角点击 项目, 然后 全部
选项卡应该是可以看到有一个和 Firebase 对应的一个项目, 选择它.
点击左上角的菜单 --> API 和服务 --> OAuth 同意屏幕
在这里主要做以下几件事:
- 上传给用户展示的信息: 图标, 应用名称, Email等
- 选择使用的API, 选择使用的 API
- 设置成生产环境
没有太多注意的地方, 但是如果在app出现 Google hasn't verified this app
, 八成就是和这里有管了. 例如我这里只用到了 获取用户的 email/profile/openid 这三个不需要验证的 API, 所以审核不审核无所谓.
如果这里处理好了(如果不需要验证, 那就是处理好了, 如果用到受限制的 API 这里要选择/说明/审核), 排除这里的问题, 还是遇到了这个警告, 那基本就是因为 APP 调用了这里你选择以外的API了, 检查代码.
点击菜单 “凭据”, 看到:
基本都是自动生成的, Android 选择那个 Client ID 呢, 有三个地方都可以获取:
- Google Cloud Platform --> API 和服务 --> 凭据 - 选择 web的, 这里web有两个, 都可以, 一个有弹框, 一个没有
- 可以看 Firebase 里设置, 上面有说, 也圈出来了
- 看
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
- 应用签名
1. Integrity API
在 Integrity API 要关联一个 Google Cloud Platform 的对应的项目.
2. 应用签名
在 Google Play Console 上传了 APP 后 (只上传密钥文件可能也行, 反正我是直接上传了APP才发现的), 在 应用签名 中会有两个密钥:
- 应用签名密钥证书
- 上传密钥证书
上传密钥证书就是自己项目里面的那个 .keystore
.
应用签名密钥整数 是 Google Play 生成的.
还有一个容易遗漏的点, 注意了可以节约点时间:
如果应用要账号才可以使用, 则需要提供账号供审核使用(iOS 也是一样), 如果忘了, 会被打回重新提交审核, 浪费时间.
在 应用内容 --> 应用访问权限, 点击管理 提供一个测试账号.
Facebook 有同样类似的问题
Facebook 授权登录, 开发的时候验证可以, 但是上了 Google Play 就不行了.
根据 Google 授权登录的经验, 立马就想到, 肯定是证书的问题. Google Play 商店生成了商店的证书, 而 Facebook 中设置的 Key Hashes
尝试下载了 Google Play 的证书, 并且添加到了自己的证书里面:
查看 Key Hash:
发现和之前的并没有变化.
真正的解决方法是用以下命令生成一个 Key Hash, 并添加到 Facebook Login 中 Android 的 Key Hashes 中:
唯一的区别是没有了 -alias 参数.
Key Hashes 可以添加多个 Hash, 保险起见, 两个 Key Hashes 都添加就完事了.
Facebook 的文档中是有 -alias
参数的, 一直没有怀疑这个参数的问题, 结果不要这个参数就可以了.