客户身份(CIAM)

微信小程序快速实现示例

微信小程序快速实现示例

# 前提准备

IDaaS平台新增微信小程序认证源,并为应用配置微信小程序授权认证方式。请参考配置微信小程序授权登录

# 操作步骤

# 微信小程序登录

微信小程序登录分为两步,

  1. 从微信小程序获取用户登录凭证(code),通过此凭证进而换取用户登录态信息。
  2. 调用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

结果示例

# 调用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

# 绑定用户信息

微信小程序首次登录未绑定IDaaS用户时,IDaaS返回state_token给微信小程序,微信小程序需要绑定IDaaS用户信息。

小程序绑定IDaaS用户信息成功后,IDaaS返回session_token与id_token给微信小程序,小程序可以通过id_token获取用户信息。

绑定用户信息分为两步:

  1. 获取微信小程序手机号码动态令牌code
  2. 调用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

结果示例

点击“获取手机号”按钮时,拉起微信授权弹窗。

用户点击要授权的手机号码时,获取微信返回的动态令牌(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

# 根据id_token获取用户信息

微信小程序登录成功后,或首次登录绑定用户成功后都会返回session_token、id_token。id_token为jwt格式,包含用户身份信息。参考根据id_token获取用户信息获取用户信息,令牌有效期默认为5分钟。