Session Key

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

获取Session Key的URL地址 :

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

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

您只需要将原接口地址

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

更改为

 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 错误描述信息,用来帮助理解和解决发生的错误。

# 示例

在开发者工具中预览效果

# 图片示例

# 代码示例

  • 在 js 文件中
Page({
    data: {
        sessionKey: ''
    },
    getSessionKey() {
        swan.login({
            success: res => {
                swan.request({
                    url: 'https://spapi.baidu.com/oauth/jscode2sessionkey',
                    method: 'POST',
                    header: {
                        'content-type': 'application/x-www-form-urlencoded'
                    },
                    data: {
                        // swan.login()返回的 code
                        code: res.code,
                        client_id: 'WPGsbTTGEQ2VRnNcEIjyo5nT1wGxc3PZ',
                        sk: 'zkDSFBfXvHtmtMAsNrQ8sFN9DNLFNZE4'
                    },
                    success: res => {
                        if (res.statusCode === 200) {
                            this.setData({
                                sessionKey: res.data.session_key || ''
                            });
                        }
                        
                    }
                });
            }
        });
    }
});
  • 在 swan 文件中
<view class="intro">
    <button type="primary" bind:tap="getSessionKey">获取 session key</button>
</view>
<view class="container" s-if="{{sessionKey}}">
    <view>session key 值为:</view>
    {{sessionKey}}
</view>
  • res.data 的值为
# curl -d "code=xxx&client_id=xxx&sk=xxx" 
https://spapi.baidu.com/oauth/jscode2sessionkey
{
    "openid": "ABCDEFG123",
    "session_key": "xxxxxx"
}