uniapp 开发 app 使用 google 登录

2,997 阅读3分钟

uniapp 开发app 的 google 登录曾经折腾了我很久,看网上都是使用插件,后来联系到了其中一个插件作者,给我提供了指导,终于把流程打通了,在此表示感谢。感兴趣的可以到 dcloud 插件市场搜索 JY-GoogleSignin 谷歌登录 支持安卓iOS

后来我总结了一下,不使用插件也能登录,需要注意一些事项。

准备工作

  1. 首先手机上得有梯子,懂的都懂,因为 google 服务需要使用非国内网络;
  2. 要有一个 google 账号,登录谷歌的开发者控制平台,并在其中进行配置操作;
  3. 手机上需要安装 google 服务,谷歌 play,谷歌商店,google 应用(应用名就叫 google),都使用最新版就可以。如果安装不上,可以使用 go 谷歌安装器,酷安,华谷套件等任意一种方式来安装。
  4. pc 电脑上需要安装 java ,也就是 jdk ,用来获取打包后的应用的 sha1 值,需要配置到 google 开发者应用配置中;

按步骤配置

需要一个安卓应用和一个 web 应用,如果有 ios 就加个 ios ;

  1. 进入谷歌开发者中心,地址如下 ,新建项目,
https://developers.google.cn/android-publisher/getting_started?hl=zh-cn
  1. 创建web 应用。进到左侧的凭据----> 创建凭据--->Oauth 客户端id--->应用类型选 web 应用 --->填写应用名(可自定义)-->创建。然后就会得到一个 客户端 id 和一个密钥;

  2. 创建 android 应用。同上,应用类型选 android -->软件包名称填应用打包过程中的软件包名称,比如 uni.UNI765DBE9 , 在 hbuilder 中发行打包就能看到软件包名。

  3. 安卓应用需要填写应用的 sha1 值;

    • 查看应用基座的 sha1 值。进到项目的 unpackage\debug 目录下,会有个 apk,那就是调试基座,在此目录下用 cmd 运行命令就能看到 sha1 值;其中命令中运行的 apk 应用名称要与真实基座名一致
    	 keytool -printcert -jarfile android_debug.apk
    
    • 填写上述 sha1 值;
  4. 配置 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,
}

报错信息

总结一些报错信息,都是本人亲自踩过的坑

  1. 手机调试要开梯子,否则可能会报错 12501 或者 7 ;
  2. 要安装谷歌服务,谷歌play,google 应用,谷歌商店等套件,否则会报错 12500 ;
  3. 安卓应用的包名,要和自定义基座的安卓包名一致,否则会导致报错 10 ;
  4. sha1 值要填写对,否则会报错 10 ;