Session Key

解释: 智能小程序在其服务端中发送POST请求到百度 OAuth2.0 授权服务地址,并带上对应的参数,便可获取到Session Key。

获取Session Key的URL地址 :

  1. https://spapi.baidu.com/oauth/jscode2sessionkey

为了让您的智能小程序运行在联盟 App 上,我们对获取 SessionKey 的接口做了升级。新接口可以兼容获取百度内部 App 和百度外部 App 的 SessionKey。

您只需要将原接口地址

  1. https://openapi.baidu.com/nalogin/getSessionKeyByCode

更改为

  1. https://spapi.baidu.com/oauth/jscode2sessionkey

即可让您的智能小程序在其它App上自动实现账号关联。

方法参数

获取Session Key需要的参数

参数名是否必须说明
code通过上面第一步所获得的Authorization Code。特殊说明:code中有@符号时,会请求对应的开源宿主,用户身份校验及SessionKey生成过程由开源宿主实现
client_id智能小程序的AppKey
sk智能小程序的AppSecret

若参数无误,服务器将返回一段JSON文本,包含以下数据

字段名说明
openid用户身份标识,由 appid 和 uid 生成。 不同用户登录同一个小程序获取到的 openid 不同,同一个用户使用登录不同一个小程序获取到的 openid 也不同 。
session_key用户的Session Key

若请求错误,服务器将返回一段JSON文本,包含以下参数

字段名说明
error错误码;关于错误码的详细信息请参考"错误码列表"一节。
error_description错误描述信息,用来帮助理解和解决发生的错误。

示例

在开发者工具中预览效果

图片示例

Session Key - 图1

Session Key - 图2

Session Key - 图3

代码示例

  • 在 js 文件中
  1. Page({
  2. data: {
  3. sessionKey: ''
  4. },
  5. getSessionKey() {
  6. swan.login({
  7. success: res => {
  8. swan.request({
  9. url: 'https://spapi.baidu.com/oauth/jscode2sessionkey',
  10. method: 'POST',
  11. header: {
  12. 'content-type': 'application/x-www-form-urlencoded'
  13. },
  14. data: {
  15. // swan.login()返回的 code
  16. code: res.code,
  17. client_id: 'WPGsbTTGEQ2VRnNcEIjyo5nT1wGxc3PZ',
  18. sk: 'zkDSFBfXvHtmtMAsNrQ8sFN9DNLFNZE4'
  19. },
  20. success: res => {
  21. if (res.statusCode === 200) {
  22. this.setData({
  23. sessionKey: res.data.session_key || ''
  24. });
  25. }
  26. }
  27. });
  28. }
  29. });
  30. }
  31. });
  • 在 swan 文件中
  1. <view class="intro">
  2. <button type="primary" bind:tap="getSessionKey">获取 session key</button>
  3. </view>
  4. <view class="container" s-if="{{sessionKey}}">
  5. <view>session key 值为:</view>
  6. {{sessionKey}}
  7. </view>
  • res.data 的值为
# curl -d "code=xxx&client_id=xxx&sk=xxx" 
https://spapi.baidu.com/oauth/jscode2sessionkey
{
    "openid": "ABCDEFG123",
    "session_key": "xxxxxx"
}