小程序登录
产品简介
开发者可以通过小程序官方提供的登录能力获取用户在当前宿主app的临时登录凭证。
开放标准
1、所有入驻小程序的企业都可以使用;
2、用户信息属于用户个人隐私,请开发者妥善使用,如若发现违规情节平台保留收回接口使用权限的权利。
接入流程
- 小程序调用 jd.login() 获取 临时登录凭证 code ,并回传到开发者服务器;在宿主app内未登录状态下,调用jd.login可直接唤起京东APP原生登录组件,已经登录情况下不会再次唤起(仅限于宿主为京东APP的应用);
- 开发者服务器以 code 换取 用户唯一标识 openid 和 会话密钥 session_key,之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
- 开发者可调用 jd.requestIsvToken() 来获取登录态token,进而用token去请求京东开放平台的业务接口,详见文末。
API说明
jd.login(OBJECT)
调用接口 jd.login() 获取临时登录凭证(code),亦可唤起原生登录组件;
OBJECT 参数说明:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
timeout | Number | 否 | 超时时间,单位 ms |
success | Function | 否 | 接口调用成功的回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success 返回参数:
参数名 | 类型 | 说明 |
---|---|---|
errMsg | String | 调用结果 |
code | String | 用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用 api,使用 code 换取 openid 和 session_key 等信息 |
示例代码
//app.js
App({
onLaunch: function() {
jd.login({
success: function(res) {
if (res.code) {
//xxxxx
} else {
console.log('登录失败,错误信息:',res.errMsg)
}
}
});
}
})
登录凭证校验
临时登录凭证校验接口是一个 HTTPS 接口,开发者服务器使用 临时登录凭证code 获取 session_key 和 openid 等。
注意:
- 临时登录凭证code只能使用一次
https://api-vapp.jd.com/v1/sessions/key?appid=APPID&secret=SECRET&code=CODE
请求参数
参数 | 必填 | 说明 |
---|---|---|
appid | 是 | 小程序唯一标识,可在开发者控制台获取 |
secret | 是 | 小程序的 app secret,可在开发者控制台获取 |
code | 是 | 登录时获取的 code, |
grant_type | 是 | 填写为 authorization_code |
返回说明
//正常返回的JSON数据包
{
"openid": "OPENID",
"session_key": "SESSIONKEY",
}
Tips
IDE 暂时不支持此jd.login(),请用真机查看;IDE调用,只能返回模拟数据 code为200。
jd.requestIsvToken(OBJECT)
调用接口 requestIsvToken 获取登录态的混淆 token。
OBJECT 参数说明:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
url | string | 是 | url,isv应用的url地址,格式如 https://xxxx.isvjcloud.com |
id | string | 是 | id, 可以是空字符串 |
success | Function | 否 | 接口调用成功的回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success 返回参数:
参数名 | 类型 | 说明 |
---|---|---|
errMsg | String | 调用结果 |
token | String | 登录态token |
示例代码
jd.requestIsvToken({
url:"https://xxx-isv.isvjcloud.com",
id:"",
success(res) {
console.log("requestIsvToken.success", res);
},
fail(res) {
console.log("requestIsvToken.fail", res);
},
complete(res) {
console.log("requestIsvToken.complete", res);
}
});
常见问题
无