安卓集成Google登录并进一步获取性别生日手机号等信息

时间:2024-04-14 12:40:34

由于公司做海外产品需接入Google三方登录,并且登录后除获取邮箱,用户名和用户id等基本信息外还要获取用户的性别年龄甚至手机号等信息。后面的需求实现起来就有点坑了,主要原因:Google的文档写得真心乱。看网上很多人踩了很多坑还是没找到很好的方法,于是把自己采坑后成功解决的步骤记录下来供大家参考,不谢。

1,打开官网文档,https://developers.google.com/identity/sign-in/android/start

安卓集成Google登录并进一步获取性别生日手机号等信息
点击按钮配置一个项目,选择create a new project创建新项目,输入项目名称。
安卓集成Google登录并进一步获取性别生日手机号等信息

配置项目,选择Android平台,将包名和SHA-1码填入。

注意,如果你不想每次调试都打正式签名包,你应该首先配一个debug签名的SHA-1进去,点击下图中的learn more链接可以找到获取debug签名SHA-1的方法。我在mac下获取的终端命令是:keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

安卓集成Google登录并进一步获取性别生日手机号等信息
创建成功后按照文档一步一步写代码集成就可以啦。可以下载Google官方的实例代码或者文末我的示例工程。这个主要的坑就是这个项目配置,包名和对应的SHA-1码一定要填对,而且如果是直接部署(run)到手机用的是debug的签名文件,就一定要配debug签名文件的SHA-1码,否则会返回错误码10。同理正式打包后测试也要配正式签名文件的SHA-1码。

接下来就是进一步获取用户的性别年龄甚至手机号等信息了。

代码在文末的demo里,这里就不写了。主要是需要用到Google的people api。需加上以下依赖库。
安卓集成Google登录并进一步获取性别生日手机号等信息
这里需注意:
1.因为用到了people api,所以需要在Google后台的配置刚才这个项目的people api为启用状态。否则报错如下:“People API has not been used in project 788056243672 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/people.googleapis.com/overview?project=788056243672 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.”,
如果报错点击这个地址可直接进入启用people api界面。或则直接到后台找到people api启用。
2。 一定要写明要请求的用户信息的字段,即通知setPersonFields(“names,emailAddresses,phoneNumbers,genders,birthdays”)方法,字段以逗号分隔。不写的话报错如下:personFields mask is required. Please specify one or more valid paths. Valid paths are documented at https://developers.google.com/people/api/rest/v1/people/get,点击这个地址可以看到有哪些用户信息字段可申请。
安卓集成Google登录并进一步获取性别生日手机号等信息

项目下载:https://download.****.net/download/hongenit/11103754