手机号授权

产品简介

为 方便开发者通过用户手机号关联自身用户体系或开展业务,同时也为了方便用户使用小程序进一步提升用户体验,小程序平台对外开放用户手机号授权能力。该能力会在获得用户授权后,且在充分保护用户隐私的前提下,帮助开发者便捷获取用户手机号。

手机号授权功能基于国际标准的 OAuth2.0 授权机制,在得到用户授权的情况下,获取用于换取用户信息的令牌,通过调用宙斯开放平台上的用户手机号接口获取相关信息。

用户手机号获取流程图

手机号授权码 - 图1

开放标准

1、对所有入驻小程序的企业开放,但需经过平台审核通过后使用。

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

接入流程

准备

1、通过京东小程序平台主体审核。

2、开发者在宙斯平台(https://open.jd.com/home/home#/vapp)创建京东小程序(如不能创建小程序请将京东用户pin发送到jd_mp@jd.com申请开通创建权限),创建成功后可获得appKey、appSecret。创建京东小程序(如不能创建小程序请将京东用户pin发送到jd_mp@jd.com申请开通创建权限),创建成功后可获得appKey、appSecret。)

3、申请开通调用获取手机号授权能力,请发邮件到jd_mp@jd.com申请,注明小程序appKey和小程序名称、开通手机号原因、手机号使用场景,附上使用图片,包括如何登录、如何授权输出此字段、如何使用等内容。

注意:开发者需保证手机号在约定范围使用,同时要尊重用户个人隐私,不可随意打扰用户。若发现小程序开发者在约定范围外使用用户信息或其他不合理的情况,小程序平台保留永久收回接口的权限。

第一步:授权码获取流程

手机号授权码 - 图2

详细流程:

1、开发者调用 jd.getAuthCode(),唤起授权框,请求用户授权,用户点击同意后,在成功回调方法中,获取授权 code;

2、通过 code 换取 access_token;

3、通过 access_token,即可获取对应的业务数据。

换取 access_token 等更多说明,https://open.jd.com/home/home#/doc/common?listId=995

注意:

  1. 该接口只适用于宙斯开放平台创建的小程序,appid为32位;
  2. 用户拒绝后,会调用 fail 回调方法。
授权常见错误及说明:

手机号授权码 - 图3

第二步:手机号获取流程

手机号授权码 - 图4

流程介绍:

1、开发者代码中通过button按钮来触发手机号授权操作,示例如下:

  1. <button class="button-reset" bindgetphonenumber="getPhoneNumber" open-type="getPhoneNumber" >getPhoneNumber</button>
  1. getPhoneNumber(e) {
  2. console.log("getPhoneNumber结果如下:");
  3. console.log(e);
  4. }

如果 e.detail.errMsg的值是getPhoneNumber:ok,说明用户同意授权,可进行下一步操作

2、前置调用jd.getAuthCode API,唤起授权框,用户点击同意后,获得 code;通过 code 换取 access_token,更多说明,前置调用是指,在用户点击手机号授权按钮之前,例如页面的onLoad事件中,提前拿到code,换取token;

3、获取到 access_token 后,可请求宙斯平台的api:jingdong.jda.getMobileByToken,请求成功后获得加密数据,解密后,可得到用户手机号; 宙斯平台API的[调用详解] (https://open.jd.com/home/home#/doc/common?listId=890);;) jingdong.jda.getMobileByToken接口文档

4、手机号属于用户敏感信息,因此是通过数据加密的方式进行传递与存储,必须按照宙斯平台数据加解密对接文档指南进行开发,如若发现违规情节平台保留收回接口使用权限的权利,详细开发说明 (主要关注第二部分和第四部分 )

jd.getAuthCode(OBJECT)

从本地相册选择图片或使用相机拍照。

OBJECT 参数说明:

参数名类型必填说明
successFunction成功则返回授权码
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

调用示例:

  1. jd.getAuthCode({
  2. success(res) {
  3. console.log("获取授权码成功:(getAuthCode)" + JSON.stringify(res));
  4. },
  5. fail(res){
  6. console.log("获取授权码失败(getAuthCode ):" + JSON.stringify(res));
  7. },
  8. complete(res){
  9. console.log("获取授权码compolete(getAuthCode ):" + JSON.stringify(res));
  10. }
  11. });