uniapp 开发app 的 google 登录曾经折腾了我很久,看网上都是使用插件,后来联系到了其中一个插件作者,给我提供了指导,终于把流程打通了,在此表示感谢。感兴趣的可以到 dcloud 插件市场搜索 JY-GoogleSignin 谷歌登录 支持安卓iOS 。
后来我总结了一下,不使用插件也能登录,需要注意一些事项。
准备工作
- 首先手机上得有梯子,懂的都懂,因为 google 服务需要使用非国内网络;
- 要有一个 google 账号,登录谷歌的开发者控制平台,并在其中进行配置操作;
- 手机上需要安装 google 服务,谷歌 play,谷歌商店,google 应用(应用名就叫 google),都使用最新版就可以。如果安装不上,可以使用 go 谷歌安装器,酷安,华谷套件等任意一种方式来安装。
- pc 电脑上需要安装 java ,也就是 jdk ,用来获取打包后的应用的 sha1 值,需要配置到 google 开发者应用配置中;
按步骤配置
需要一个安卓应用和一个 web 应用,如果有 ios 就加个 ios ;
- 进入谷歌开发者中心,地址如下 ,新建项目,
https://developers.google.cn/android-publisher/getting_started?hl=zh-cn
-
创建web 应用。进到左侧的凭据----> 创建凭据--->Oauth 客户端id--->应用类型选 web 应用 --->填写应用名(可自定义)-->创建。然后就会得到一个 客户端 id 和一个密钥;
-
创建 android 应用。同上,应用类型选 android -->软件包名称填应用打包过程中的软件包名称,比如 uni.UNI765DBE9 , 在 hbuilder 中发行打包就能看到软件包名。
-
安卓应用需要填写应用的 sha1 值;
- 查看应用基座的 sha1 值。进到项目的 unpackage\debug 目录下,会有个 apk,那就是调试基座,在此目录下用 cmd 运行命令就能看到 sha1 值;其中命令中运行的 apk 应用名称要与真实基座名一致
keytool -printcert -jarfile android_debug.apk- 填写上述 sha1 值;
-
配置 Oauth 同意屏幕。填写应用名称-->邮箱-->保存,到最后。其中 范围 项是配置启用的 api 。
配置 manifest.json
到 huilder 中,找到 manifest.json 的可视化配置页面,进入 App 模块配置,找到 Oauth(登录鉴权),选中 Google 登录, ios 平台的客户端ID ,将前面创建的 web 应用的 client_id 填写上即可,是 web 应用。
编写登录代码
在 uniappp 的 文档中有示例代码,抄过来如下。
uni.login({
provider: 'google',
success: function (loginRes) {
// 登录成功
uni.getUserInfo({
provider: 'google',
success: function(info) {
// 获取用户信息成功, info.authResult保存用户信息
}
})
},
fail: function (err) {
// 登录授权失败
// err.code是错误码
}
});
当调用此登录代码时,会呼起 google 应用弹窗,选取账号即可获取到信息对象,包括昵称,邮箱,openid 等信息,可用这些信息与后台接口来交互,作为登录凭证。
{
nickname: user.nickname,
unionid: user.unionid,
openid: user.openid,
email: user.email,
}
报错信息
总结一些报错信息,都是本人亲自踩过的坑
- 手机调试要开梯子,否则可能会报错 12501 或者 7 ;
- 要安装谷歌服务,谷歌play,google 应用,谷歌商店等套件,否则会报错 12500 ;
- 安卓应用的包名,要和自定义基座的安卓包名一致,否则会导致报错 10 ;
- sha1 值要填写对,否则会报错 10 ;