【Google】Google OAuth登录的Cloud配置
一、背景
在配置Android App的Google授权登录时,需要在和进行配置,这里形成文档,供后续新Android App配置参考使用。
二、OAuth配置
Google OAuth开发文档网址:
Google OAuth的配置网址:
前提条件:
- 成为Google play开发者,能访问Play Store Console后台
2.1 创建Google project
在OAuth配置网址,按下列截图流程依次创建一个Android app项目

填入项目名字,组织和父组织可以选择“No organization”

2.2 配置OAuth
如下图,一步步进入到OAuth的配置(这里假设刚创建project中的project name是test-flow)



点击"Get started"后,一步步完成project配置

这里输入app的名字,选择你的Google开发者邮箱

这里选择“外部”受众,就可以让所有有Google账号的用户可以使用app中的Google服务。

还是输入开发者Google邮箱即可,推荐统一使用开发者邮箱接收信息(这里的邮箱可以输入多个)。

完成配置


2.3 配置Android客户端
紧接2.2的步骤,是需要配置一个客户端,对于我们来说,就是可以在一个project下创建不同平台的客户端。
具体操作,紧跟2.2后如下面的截图,选择Android类型

选择完Android类型后,是需要配置Android应用信息的步骤
下图中的信息:
- Name: 就取Android app名字就好(不会被app用户看到的客户端名字定义)
- package name:包名 (非开发人员可以问开发人员获取)
- SHA-1 签名:这里需要打开Play Store开发者后台去获取Google play的SHA-1签名
(可以看截图中的那行描述文字,在google play console的相应位置去获取)
For Google Play distribution, find the fingerprint in the Google Play Console under "Protected with Play > Play Store protection > Manage Play app signing". For other distributions (such as local APKs), use this command to get the fingerprint:

(如下是google play console中的SHA-1签名位置如下)

点击“创建”

弹出了成功弹窗,提示可以下载配置的json文件(可以下或者不下载,因为都能找得到配置)

完成创建后,client菜单页面中就显示了这个Android app的一个OAuth的【Google Play签名】的配置项(这里的Android client 1就是刚刚2.2中的Name输入框中默认的名字,可以修改)。

之前弹窗中和这里列表中显示的“Client ID”,可以点击复制下来,供Android开发者使用。
2.4 配置Web Client OAuth
在2.3中我们配置了Android类型的Google play store签名的OAuth Client ID,这句话一定要注意。
Google play store签名的OAuth Client ID,指的是从Google play下载的不管内测还是发布的app,都可以使用这个client ID去调用Google OAuth API服务
Android app的OAuth client ID配置好后,那么就需要给服务端配置一个Web OAuth Client ID,目的就是让服务端可以配置服务端用的Google OAuth SDK的client ID。
接下来的流程,如下面的图所示:


在web client id创建时,可以只输入一个名字,下面红色框内的域名配置,我们可以等会到左侧菜单栏的【Branding】的配置项中去配置,如果这里配置了当然也会像截图中的tip所说“会自动配置到授权内容部分”。

创建完成,并一定要留意弹窗【留意创建完成后的弹窗】

【特别注意】【特别注意】【特别注意】
这里一定要下载这个JSON文件并妥善保存,这里的secret是提供给服务端使用的(虽然当前,依然可以进入创建的这个web client ID中查看secret,但不保证后续Google会取消web client id中查看secret的功能,所以最好按照Google提示下载并妥善保存)。

2.5 特别注意【生效时间几个小时到1天不等,所有app要提前配置好】
我们在创建Android OAuth Client ID 和 Web OAuth Client ID的时候,下方“创建”按钮上方,都有提示“Note: It may take 5 minutes to a few hours for settings to take effect”,生效时间是不确定的。
按照最近几次的创建经历,生效时间在3小时到6小时左右,所以如果有用到Google OAuth API服务的App,都是需要提前配置好这些,避免时间损耗。

2.6 配置未生效时App中的表现
当Google 的OAuth配置还没有生效时,那么最常见的现象,就是在Android app中点击Google授权登录,尽管弹出了Google邮箱选择弹窗,但是点击邮箱,会一直报错:[16] Account reauth failed.
code
error = {GoogleSignInException} GoogleSignInException(code GoogleSignInExceptionCode.canceled, [16] Account reauth failed., null)
code = {GoogleSignInExceptionCode} GoogleSignInExceptionCode.canceled
index = 1
_name = "canceled"
description = "[16] Account reauth failed."
details = null
2.7 先看Audience
这里表示的是,是否把该project设置为对外公开,并且发布状态的地方。
含义解释:对外公开External才能让拥有Google账号的用户使用我们的app,前提条件是当前project需要已发布状态,而要把project发布,就需要先配置Branding.否则应用就只能被Google play console的内测许可邮箱测试使用,外部用户无法使用app中的Google OAuth服务.
也就是说当前project最终需要的Branding中的状态是:In production、External.
所以下一步,先去步骤2.8 中配置Branding.

2.8 配置Branding(当前Google要求Branding中必须全部配置)
如这个页面中所示,对于早期的Google开发者邮箱的Cloud中的配置,是不需要配置如下截图中的App domain的,但是最近新建的Google Cloud中提示是必须都要输入的。


- App Name:填Android app的名字
- User support email:Android app客服邮箱,使用开发者Google邮箱也可
- App logo:上传一个120*120 px的App logo即可
- App domain中提供
- Application home page: Android app应用的首页h5网址
- Application privacy policy link:Android app中的隐私网址
- Application terms of service link:Android app中的用户协议网址
- Authorized domains
这里就直接填写你在上方3个输入框中填写的一级域名即可,是可以添加多个的,你点击“Add domain”按钮就可以添加
比如你在3个输入框中使用到的网址分别是:1. https://app.google-app.com/index;2. https://www.google-app.com/privacy; 3. https://h5.google-app.com/consent;
那么你在这个输入的地方就应该添加1个一级域名:google-app.com 即可
示例如下:



再回到Audience中将project的状态进行发布。
2.9 在Audience中发布project
现在回到Audience中,“发布 app”按钮才会是可以点击的。如果你之前在创建project的时候选择了“internal”,那么这时你也应该在下面截图中的"User type"中选择“External”。


点击“确认”后,project变成了“In production”状态

3.0 配置Project的OAuth数据请求范围
这项配置是允许OAuth API可以获取的信息,指使用Google账号登录app的那些用户,他们的哪些信息会被我们获取到。
按照下图去新增scopes.

勾选前三项

勾选后记得点击“更新”按钮保存修改

加完后,就有显示在下方的数据范围列表

三、总结
经过上面所有的配置,我们来看各个开发端能拿到的信息
- Android开发者能拿到:
- Android OAuth Client ID;
- Web OAuth Client ID;
- Web server后端开发者能拿到:
- Web OAuth Client ID;
- Web OAuth Client Secret;
- Android应用的包名;
那么Android端和服务端就可以拿着这些信息进行各自端SDK的集成去实现Google OAuth服务.
截图中出现的一些"品牌验证"(Branding Verification)三角符号的警告或者提醒,暂时可以忽略,不影响Google OAuth业务功能。
暂无评论,快来发表第一条评论吧