公益统一登录插件
更新日志
2023-04-24
- 插件更新-增加 env 参数来区分后台环境接口 版本号1.2.0
2023-02-14
- 插件发布-正式环境接口 版本号1.1.0
2023-02-13
- 插件发布-测试环境接口 版本号1.0.3
- 插件发布-预发布环境接口 版本号1.0.4
2022-12-7
- 增加同主体小程序静默登录方式,详见 使用插件 -> 静默登录
1. 添加插件
在使用插件前,首先要在小程序管理后台的“设置-第三方服务-插件管理”中添加插件。开发者可登录小程序管理后台,通过 appid 查找插件 wxece4146e22efa8f1 并添加。
点击申请后请联系 @christyma 审核,通过后可在小程序中使用登录插件。
登录插件提供两种使用方式,可根据小程序主体和业务需求自行选择
- 静默登录: 内部使用,需要和腾讯公益在同一主体下,并关联在同一开放平台账号下。静默登录无需跳转用户信息功能页授权,可以直接获取到 code;
- 普通登录: 无主体限制。 需要放置登录按钮引导用户点击,跳转至用户信息功能页授权成功后可获取到 code
2. 引用插件
全局声明
使用插件前,使用者要在 app.json 中声明插件,代码示例:
"plugins": {
"GYLogin": {
"version": "1.0.0",
"provider": "wxece4146e22efa8f1"
}
}
其中 version 是使用插件的版本号,在开发阶段可以使用开发版本的插件联调,版本号格式为 dev-xxxxxxxxx,需联系 @christyma 获取
引入插件的自定义组件(静默登录)
在需要调用登录的页面引入插件 GYLogin
const GYLogin = requirePlugin("GYLogin");
引入插件的自定义组件(普通登录)
使用插件提供的自定义组件,和 使用普通自定义组件 的方式相仿。在页面的 json 文件定义需要引入的自定义组件时,使用 plugin:// 协议指明插件的引用名和自定义组件名,代码示例:
"gy-login": "plugin://GYLogin/gy-login"
3. 使用插件
1> 静默登录
静默登录必须是同一主体且绑定过,否则会调用失败;
调用 GYLogin 登录
使用者小程序需要在页面初始化时调用 wx.login 获取 code,传参给 GYLogin
wx.login({
success: (res) => {
const code = res.code;
const appid = "xxxxxx";
GYLogin.login(appid, code, env).then(
(res) => {
// res 为登录成功的 code
console.log("登录成功", res);
},
(err) => {
console.log("登录失败", err);
}
);
},
});
请求参数:
参数 | 必填 | 说明 |
---|---|---|
appid | 是 | 登录的目标应用 appid |
code | 是 | wx.login 获取到的 code |
env | 否 | test (测试环境), pre (预发布环境), release (正式环境), 不填或填错默认为正式环境 |
登录成功后可以通过 code 换取 access_token 来获取用户登录授权 token
2> 普通登录
组件 gy-login 内部插槽放置登录按钮
插件内部会判断用户是否授权过用户信息页,未授权的新用户会展示放置的登录按钮,授权过且在 30 天内的,则不会展示。
<gy-login
code="{{ code }}"
appid="{{ appid }}"
wx:if="{{ code }}"
bindsuccess="loginSuccess"
bindfail="loginFail"
>
<!-- 这里放置你的登录按钮 -->
<!-- 例如: <button>Login</button> -->
</gy-login>
请求参数:
参数 | 必填 | 说明 |
---|---|---|
code | 是 | wx.login 获取到的 code |
appid | 是 | 登录的目标应用 appid |
bindsuccess | 是 | 成功回调 |
bindfail | 是 | 失败回调 |
使用者小程序需要在页面初始化时调用 wx.login 获取 code,传给 gy-login 组件
wx.login({
success: (res) => {
const code = res.code;
this.setData({
code: res.code,
});
},
});
组件登录之后有成功回调 bindsuccess 和失败回调 bindfail,使用者小程序可以自行处理登录之后的业务逻辑
loginSuccess(e){
console.log('插件返回的code:', e.detail)
},
loginFail(e){
console.log('插件登录失败:', e.detail)
},
bindsuccess 返回的 e.detail 为登录成功的 code ,可以通过 code 换取 access_token 来获取用户登录授权 token
普通登录插件内部逻辑
新用户首次登录
显示 gy-login 内部插槽按钮,用户点击 Login 按钮之后跳转至 用户信息功能页 进行授权
点击 允许使用 后,会返回使用者小程序页面,login 按钮自动隐藏,并返回 code
老用户授权过,再次登录
- 不显示 gy-login 内部插槽按钮, 直接返回code
老用户授权过期
- 流程同新用户一致