客户身份(CIAM)
微信小程序快速实现示例
微信小程序快速实现示例
# 前提准备
IDaaS平台新增微信小程序认证源,并为应用配置微信小程序授权认证方式。请参考配置微信小程序授权登录
# 操作步骤
# 微信小程序登录
微信小程序登录分为两步,
- 从微信小程序获取用户登录凭证(code),通过此凭证进而换取用户登录态信息。
- 调用IDaaS微信小程序登录接口,参数为第一步获取的凭证(code)。首次登录未绑定IDaaS用户时,返回state_token,需要绑定用户信息。已成功绑定用户时,返回session_token与id_token,可以通过id_token获取用户信息。
# 获取微信小程序登录授权码code
通过wx.login方法,获取微信小程序登录凭证code。微信wx.login (opens new window)官方文档说明
wx.login({
success (res) {
if (res.code) {
//控制台打印
console.log("wx.login获取的授权码为:"+ res.code)
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
结果示例
# 调用IDaaS的微信小程序登录接口登录
使用wx.login获取的登录凭证code,调用IDaaS微信小程序登录接口
POSTMAN请求示例
结果示例
首次登录,需要绑定用户信息,state_token用于后续的绑定流程。
HTTP/1.1 200 OK
Content-Type: application/json
{
"state_token": "eyJhbGcCJ9.eyJzdWMCJ9…tL2VPS8",
"data": null,
"status": "USER_REGISTER"
}
已绑定用户返回session_token、id_token
HTTP/1.1 200 OK
Content-Type: application/json
{
"session_token": "btsiBjx85prcZu6I6Ki057Tmw3nSF2VO",
"expire": 432000,
"status": "SUCCESS",
"id_token": "eyJraWQn0.eyJpc3MiOiJodHR…g1A7jG8O0uw"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 绑定用户信息
微信小程序首次登录未绑定IDaaS用户时,IDaaS返回state_token给微信小程序,微信小程序需要绑定IDaaS用户信息。
小程序绑定IDaaS用户信息成功后,IDaaS返回session_token与id_token给微信小程序,小程序可以通过id_token获取用户信息。
绑定用户信息分为两步:
- 获取微信小程序手机号码动态令牌code
- 调用IDaaS微信授权手机绑定用户接口,参数为第一步获取的动态口令(code)。绑定用户后,IDaaS返回session_token与id_token给微信小程序,小程序可以通过id_token获取用户信息。
# 获取微信小程序手机号码动态令牌code
通过getPhoneNumber方法,获取手机号码的动态令牌(code)。微信小程序getPhoneNumber (opens new window)官方文档说明
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
Page({
getPhoneNumber (e) {
//控制台打印
console.log("getPhoneNumber方法获取授权码code为:"+e.detail.code) // 动态令牌
}
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
结果示例
点击“获取手机号”按钮时,拉起微信授权弹窗。
用户点击要授权的手机号码时,获取微信返回的动态令牌(code)
# 调用IDaaS微信授权手机绑定用户接口
使用getPhoneNumber获取的动态令牌code,调用IDaaS微信授权手机绑定用户接口 (opens new window)
POSTMAN请求示例
结果示例
成功示例:
HTTP/1.1 200 OK
Content-Type: application/json
{
"session_token": "btsiBjx85prcZu6I6Ki057Tmw3nSF2VO",
"expire": 7200,
"status": "SUCCESS",
"id_token": "eyJraWQn0.eyJpc3MiOiJodHR…g1A7jG8O0uw"
}
错误示例:
HTTP/1.1 400 Bad Request
{
"error_code": "SDK.COMMON.1005",
"error_msg": "state_token 已失效"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 根据id_token获取用户信息
微信小程序登录成功后,或首次登录绑定用户成功后都会返回session_token、id_token。id_token为jwt格式,包含用户身份信息。参考根据id_token获取用户信息获取用户信息,令牌有效期默认为5分钟。