Skip to content

微信小程序快速实现示例

前提准备

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

操作步骤

微信小程序登录

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

  1. 从微信小程序获取用户登录凭证(code),通过此凭证进而换取用户登录态信息。
  2. 调用IDaaS微信小程序登录接口,参数为第一步获取的凭证(code)。首次登录未绑定IDaaS用户时,返回state_token,需要绑定用户信息。已成功绑定用户时,返回session_token与id_token,可以通过id_token获取用户信息。

获取微信小程序登录授权码code

通过wx.login方法,获取微信小程序登录凭证code。微信wx.login官方文档说明

js
wx.login({
  success (res) {
    if (res.code) {
     //控制台打印
     console.log("wx.login获取的授权码为:"+ res.code)
    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})

结果示例

调用IDaaS的微信小程序登录接口登录

使用wx.login获取的登录凭证code,调用IDaaS微信小程序登录接口

POSTMAN请求示例

结果示例

返回示例

json
首次登录,需要绑定用户信息,state_token用于后续的绑定流程。

返回示例

成功示例

HTTP/1.1 200 OK

json
{
    "state_token": "eyJhbGcCJ9.eyJzdWMCJ9…tL2VPS8",
    "data": null,
    "status": "USER_REGISTER"
}

已绑定用户返回session_token、id_token

成功示例

HTTP/1.1 200 OK

json
{
    "session_token": "btsiBjx85prcZu6I6Ki057Tmw3nSF2VO",
    "expire": 432000,
    "status": "SUCCESS",
    "id_token": "eyJraWQn0.eyJpc3MiOiJodHR…g1A7jG8O0uw"
}

绑定用户信息

微信小程序首次登录未绑定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官方文档说明

html
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>

Page({
  getPhoneNumber (e) {
	//控制台打印
    console.log("getPhoneNumber方法获取授权码code为:"+e.detail.code)  // 动态令牌
  }
})

结果示例

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

用户点击要授权的手机号码时,获取微信返回的动态令牌(code)

调用IDaaS微信授权手机绑定用户接口

使用getPhoneNumber获取的动态令牌code,调用IDaaS微信授权手机绑定用户接口

POSTMAN请求示例

结果示例

成功示例

HTTP/1.1 200 OK

json
{
    "session_token": "btsiBjx85prcZu6I6Ki057Tmw3nSF2VO",
    "expire": 7200,
    "status": "SUCCESS",
    "id_token": "eyJraWQn0.eyJpc3MiOiJodHR…g1A7jG8O0uw"
}

错误示例

HTTP/1.1 400 Bad Request

json
{
	"error_code": "SDK.COMMON.1005",
	"error_msg": "state_token 已失效"
}

根据id_token获取用户信息

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

竹云IDaaS开放平台