小程序登录

产品简介

开发者可以通过小程序官方提供的登录能力获取用户在当前宿主app的临时登录凭证。

开放标准

1、所有入驻小程序的企业都可以使用;

2、用户信息属于用户个人隐私,请开发者妥善使用,如若发现违规情节平台保留收回接口使用权限的权利。

接入流程

  1. 小程序调用 jd.login() 获取 临时登录凭证 code ,并回传到开发者服务器;在宿主app内未登录状态下,调用jd.login可直接唤起京东APP原生登录组件,已经登录情况下不会再次唤起(仅限于宿主为京东APP的应用);
  2. 开发者服务器以 code 换取 用户唯一标识 openid 和 会话密钥 session_key,之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
  3. 开发者可调用 jd.requestIsvToken() 来获取登录态token,进而用token去请求京东开放平台的业务接口,详见文末。
注意 体验版扫码体验需要在登录状态下进行。

API说明

jd.login(OBJECT)

调用接口 jd.login() 获取临时登录凭证(code),亦可唤起原生登录组件;

OBJECT 参数说明:

参数名类型必填说明
timeoutNumber超时时间,单位 ms
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数:

参数名类型说明
errMsgString调用结果
codeString用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用 api,使用 code 换取 openid 和 session_key 等信息

示例代码

  1. //app.js
  2. App({
  3. onLaunch: function() {
  4. jd.login({
  5. success: function(res) {
  6. if (res.code) {
  7. //xxxxx
  8. } else {
  9. console.log('登录失败,错误信息:',res.errMsg)
  10. }
  11. }
  12. });
  13. }
  14. })

登录凭证校验

临时登录凭证校验接口是一个 HTTPS 接口,开发者服务器使用 临时登录凭证code 获取 session_key 和 openid 等。

注意:

  1. 临时登录凭证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

返回说明

  1. //正常返回的JSON数据包
  2. {
  3. "openid": "OPENID",
  4. "session_key": "SESSIONKEY",
  5. }
Tips

IDE 暂时不支持此jd.login(),请用真机查看;IDE调用,只能返回模拟数据 code为200。

jd.requestIsvToken(OBJECT)

调用接口 requestIsvToken 获取登录态的混淆 token。

OBJECT 参数说明:

参数名类型必填说明
urlstringurl,isv应用的url地址,格式如 https://xxxx.isvjcloud.com
idstringid, 可以是空字符串
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数:

参数名类型说明
errMsgString调用结果
tokenString登录态token

示例代码

  1. jd.requestIsvToken({
  2. url:"https://xxx-isv.isvjcloud.com",
  3. id:"",
  4. success(res) {
  5. console.log("requestIsvToken.success", res);
  6. },
  7. fail(res) {
  8. console.log("requestIsvToken.fail", res);
  9. },
  10. complete(res) {
  11. console.log("requestIsvToken.complete", res);
  12. }
  13. });

常见问题