开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
开放能力 api
支付
用户授权
会员
周期扣款
商家会员卡
消息
模板配置
支付宝卡包
交易组件
小程序商品
开发 > api > 开放能力 api > 用户授权 > my.getauthcode
收藏
订阅更新
我的文档
设置

my.getauthcode(object object)

支小宝客户端 支持

安诊儿客户端 支持

插件: 支持。 支持在小程序插件中使用,授权主体是宿主小程序。

主体: 企业支付宝小程序个人支付宝小程序

获取用户信息授权,取得授权码(authcode)。

my.getauthcode 引导用户授权其信息给当前小程序,取得的代表用户授权的授权码(authcode),后续需由小程序服务端使用,向支付宝换取用户信息(如 user_id(open_id)、头像、昵称、手机号、地区、性别、出生日期等)。这种方式较通用,但也相对复杂(参见下文接入流程)。

对于简单需求,建议优先选择其他方式:获取用户昵称和头像,请使用 my.getopenuserinfo;获取用户手机号,请使用 my.getphonenumber

获取 user_id(open_id)

为了确保准确接入“获取 user_id(open_id)”的能力, 需要按照 api 调用 > 获取 user_id(open_id) 的流程接入。
1
api 调用 小程序
2
获取 user_id(open_id) 服务端

是否必须: 是。

  1. 在小程序上调用 my.getauthcode,调用时 scope 传入 auth_base:基本信息授权,直接取得 authcode,此 authcode 仅可用于换取用户的 user_id(open_id)。

  2. 获取 authcode 以后,小程序通过 my.request 等方式将其传递给服务端。

是否必须: 是。

服务端使用 authcode,调用 alipay.system.oauth.token 取得 user_id(open_id) 和 token(授权令牌)。

获取用户信息

为了确保准确接入“获取用户信息”的能力, 需要按照 隐私申请 > api 调用 > 获取用户信息 的流程接入。
1
隐私申请 开放平台
2
api 调用 小程序
3
获取用户信息 服务端

是否必须: 是。

在开放平台——控制台——隐私申请中的获取会员信息中按需申请相应的字段。如图

  • 每个字段的类目要求和审批规则不同,请参考 隐私申请及使用基础规则

  • 应隐私政策要求,对 cert_type、cert_no、person_cert_expiry_date 的申请将不再通过。有特殊要求(如政务类)的小程序请联系合作的支付宝业务人员。

是否必须: 是。

  1. 第一步的申请审批通过后,在小程序上调用 my.getauthcode 获取用户授权。调用时 scope 传入 auth_user:会员信息授权,会出现授权引导浮窗,第一步申请通过的字段都会一次性向用户展示,用户同意以后小程序可获得 authcode。

  2. 获取 authcode 以后,小程序通过 my.request 等方式将其传递给服务端。

是否必须: 是。

  1. 服务端使用 authcode,调用 alipay.system.oauth.token 取得 user_id 和 token(授权令牌)。

  2. 服务端继续使用所取得的 token 调用 alipay.user.info.share 最终获得用户信息。

object object

查看示例

属性 类型 默认值 必填 描述
scopes string/array auth_base

授权类型。

枚举值 描述 兼容性
auth_base

授权获取支付宝会员唯一标识:user_id(open_id)。此方式为静默授权,不会弹出授权浮窗。

-
auth_user

授权获取支付宝会员信息。

-
success function -

调用成功的回调函数。

fail function -

调用失败的回调函数。

complete function -

调用结束的回调函数(调用成功、失败都会执行)。

success 回调函数

参数

object res

查看示例

属性 类型 描述
authcode string

授权码。

autherrorscopes object

失败的授权类型,key 是授权失败的 scope,value 是对应的错误码。

authsuccessscopes array

成功的授权 scope。

fail 回调的参数为 object,error 属性为错误码,errormessage 属性为错误消息。

错误码 错误消息 凯发app官方网站的解决方案
3 未找到授权结果

如果 scopes 入参包含无效值,界面上会先弹出 服务正忙,请稍后再试

11 用户取消授权 / 页面已退出

充分说明获取用户信息的用途和必要性,重新引导操作。

12 network error / 登录超时,请重新登录

授权相关网络请求失败或超时,请稍后重试。

13 timeout

授权等待超时,请重试。

14 授权等待超时

授权等待超时,请重试。

15 人气太旺啦,稍后再试试

调用 api 请求太频繁,被限流了,请4个小时后再调用重试。

my.getauthcode(object object)
success 参数
fail 参数
web-view 中获取用户信息
page({
  getauthcode() {
    my.getauthcode({
      scopes: 'auth_user',
      success: res => {
        const authcode = res.authcode;
        // 在服务端获取用户信息
        my.request({
          // 你的服务器地址
          url: 'https://yourserveraddress',
          data: {
            authcode,
          },
          success(res) {
            // 获取需要的用户信息
            console.log(res)
          }
        })
      },
      fail: err => {
        console.log('my.getauthcode 调用失败', err)
      }
    });
  }
})
{
  "authcode": "0b9a9c214b55447986a6af2d8a0buc09",
  "authsuccessscopes": [
    "auth_base"
  ],
  "autherrorscopes": {}
}
{
  "error": 11,
  "errormessage": "用户取消授权"
}
/** web-view h5 示例代码 */
// step 1. h5 向小程序发送消息请求获取用户信息
my.postmessage({ action: 'authorize' });
// step 4. 接受小程序发过来的用户信息
my.onmessage = function (message) {
  if (message.type == 'authorizeresult') {
    console.log(message.data);
  }
};
/** 小程序 .axml 示例代码 */
<view<web-view id="web-view-1" src="..." onmessage="handlemessage"></web-view</view/** 小程序 .js 示例代码 */
page({
  handlemessage(message) {
    // step 2. 小程序页面接收信息时,触发授权调用
    if (message.action == 'authorize') {
      this.authorize();
    }
  },
  authorize() {
    return new promise((resolve, reject) => {
      my.getauthcode({
        scopes: 'auth_user',
        success: res => {
          const authcode = res.authcode;
          // 在服务端获取用户信息
          my.request({
            // 你的服务器地址
            url: 'https://yourserveraddress',
            data: {
              authcode,
            },
            success: (res) => {
              // step 3. 将信息发送到 web-view h5
              const webviewcontext = my.createwebviewcontext('web-view-1');
              webviewcontext.postmessage({
                type: 'authorizeresult', 
                data: res.data
              });
            },
          });
        },
        fail: err => {
          console.log('my.getauthcode 调用失败', err)
        }
      });
    });
  }
});
  • tip
    此 api 不支持在 web-view 中调用。如果要在 web-view 中使用用户信息,可在小程序上下文中获取后通过 my.postmessage 传给 web-view。
  • tip
    请在用户充分了解小程序的业务内容后再调用 my.getauthcode,避免损害用户体验。
  • tip
    请勿在小程序首屏调用 my.getauthcode,否则将面临违规处罚风险。

q:如何在一个弹窗里同时进行用户信息、手机号、身份证等授权?

a:

参照上文 接入流程 获取用户信息 的第 1 步,成功申请的字段会在 my.getauthcode 调用的弹窗里一次性授权。

q:调用 alipay.user.info.share 获取用户已授权的信息时,报错 “isv 权限不足” 如何处理?

a:

参照上文 接入流程 获取用户信息 的第 1 步,确保已经完成隐私申请。

q:授权码(auth_code)无效应该如何处理(isv.code-invalid)?

a:

授权码无效可能是以下几种情况,请对照排查。

  • appid 选择错误
    请确认是否使用了正确的 appid。授权码必须是获取用户信息的商户进行调用。

    • 如果是自调用模式,拼接授权链接的 appid 或者绑定小程序的 appid 必须与调用接口的 appid 一致。
    • 如果是三方代调用模式(服务商代商户获取用户信息),在用户信息授权链接中 appid 必须设置为授权商户的 appid,而不是服务商的 appid。
  • 授权码已被使用

    • 授权码一次有效,不可重复使用,请确定传入的授权码是否已经被使用过。
  • 授权码过期

    • 授权码有效期为 3 分钟到 24 小时,超过有效期的授权码即使未使用也将自动失效。请检查传入的授权码是否因为长时间未使用已经过期。

q:web-view 中如何进行用户授权?

a:

web-view 中不支持调用 my.getauthcode 接口。如果要在 web-view 中使用用户信息,请在小程序中获取后传递到 web-view h5 中。
可点此查看示例代码: web-view 中获取用户信息

内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图