支付宝小程序API 获取会员基础信息
my.getOpenUserInfo
简介
my.getOpenUserInfo 可获取支付宝会员的基础信息(头像图片地址、昵称、性别、国家码、省份、所在市区)。
如需获取支付宝会员标识(user_id),请调用 my.getAuthCode 和 alipay.system.oauth.token 接口。
相关问题请参见下文 获取会员基础信息 FAQ。
使用限制
- 本接口在 IDE 模拟器中返回的数据为虚拟数据;真实数据请以真机调试效果为准。
- 基础库 1.16.4 或更高版本;支付宝客户端 10.1.35 或更高版本,若版本较低,建议采取 兼容处理。
- 本功能需要用户主动触发才能激活,所以该功能不由 API 直接调用,需用
<button>
组件 的点击来触发。将<button>
组件open-type
的值设置为getAuthorize
,当用户点击并同意之后,可以通过my.getOpenUserInfo
接口获取到支付宝服务器返回的基础信息,若用户未授权,直接调用my.getOpenUserInfo
接口,则无法返回正确信息。 - 需添加 获取会员基础信息 功能后,才可调用此接口。
- 不能通过
my.getOpenUserInfo
接口获取支付宝会员标识(user_id)。
示例代码
唤起授权框,推荐兼容方案如下:
<!-- .axml -->
<button a:if="{{canIUseAuthButton}}" open-type="getAuthorize"
onGetAuthorize="onGetAuthorize" onError="onAuthError"
scope='userInfo'>
会员基础信息授权
</button>
Button 属性说明
属性 | 说明 |
---|---|
open-type | getAuthorize为授权组件(固定值)。 |
scope | userInfo(固定值)。 |
onGetAuthorize | 授权成功回调(在回调里可以调用获取信息的接口)。 |
onError | 授权失败回调(包括用户拒绝和系统异常)。 |
获取用户基础信息
用户点击同意后,即可通过 my.getOpenUserInfo()
获取用户基础信息:
// .js
onGetAuthorize(res) {
my.getOpenUserInfo({
fail: (res) => {
},
success: (res) => {
let userInfo = JSON.parse(res.response).response // 以下方的报文格式解析两层 response
}
});
},
您可以通过以下方式获取用户信息中的某个参数。
以获取用户信息中的昵称为例:console.log(JSON.parse(res.response).response.nickName)
返回 res 报文格式
- 成功返回 res 报文格式示例如下:
{"response": "{"response": {"code": "10000","msg": "Success","countryCode": "CN","gender": "f","nickName": "XXX","avatar": "https://tfs.alipayobjects.com/images/partner/XXXXXXXX","city": "南通市","province": "江苏省"}}"}
- 未接入“获取用户基础信息”的功能包,返回 res 报文格式示例如下:
{"response":"{"response":{"code":"40003","msg":"Insufficient Conditions","subCode":"isv.invalid-auth-relations","subMsg":"无效的授权关系"}}"}
success 回调函数
入参为 res 对象,Object 类型,属性被解析后如下表所示:
注:
- 在 IDE 0.70 或以上的版本支持返回全部 6 个参数,由于安全原因,其中 avatar 和 nickName 是当前登录 IDE 用户的真实值,其它 4 个属性为 mock 数据,在真机上上显示为真实值。
- 若用户未设置 avatar 和 nickName,则不会返回这两个参数。
名称 | 类别 | 类型 | 是否必填 | 描述 |
---|---|---|---|---|
avatar | 基础类型 | String | 选填 | 头像图片地址 |
nickName | 基础类型 | String | 选填 | 昵称 |
gender | 基础类型 | String | 必填 | 性别,男对应“m”,女对应“f” |
countryCode | 基础类型 | String | 必填 | 国家码 |
province | 基础类型 | String | 必填 | 省份 |
city | 基础类型 | String | 必填 | 所在市区 |
获取会员基础信息 FAQ
更新时间:2020-03-11 17:24:12
调用 my.getOpenUserInfo,报错“无效的授权关系”,如何处理?
用户 主动触发 才能发起获取会员基础信息请求,不能由 API 直接获取会员基础信息,需使用 button 组件 的“点击”动作来触发操作。需要将 <button>
组件 open-type
的值设置为 getAuthorize
,并将 scope
设为 userinfo
,示例代码如下:
<!-- .axml -->
<button a:if="{{canIUseAuthButton}}" open-type="getAuthorize"
onGetAuthorize="onGetAuthorize" onError="onAuthError"
scope='userInfo'>
会员基础信息授权
</button>
“获取会员信息”、“获取会员基础信息”两个功能包有什么区别?
自 2019 年5月25日 起,已不再支持添加“获取会员信息”功能包。
已添加“获取会员信息”功能包的小程序,在使用“获取会员基础信息”功能之前,仍需添加“获取会员基础信息”功能包。
调用 alipay.user.info.share 报错“ISV 权限不足”如何处理?
alipay.user.info.share 是“获取会员信息”功能包中使用的 API。“获取会员信息”功能包已于2019 年5月25日升级,在此日期之前未签约“获取会员信息”功能包的小程序无法再调用 alipay.user.info.share,请使用“获取会员基础信息”功能包。
调用 my.getOpenUserInfo 报错 "ISV权限不足"如何处理?
“获取会员信息”功能包已下架,若之前创建的应用已添加了“获取会员信息”的功能包则能正常调用接口,未添加的则无法再添加此功能。 新创建的应用请使用 获取会员基础信息 my.getOpenUserInfo 接口。
\1. 在小程序开发管理后台的 功能列表 中,点击 添加功能。
\2. 添加 获取会员基础信息 功能包。
为什么接入“获取会员基础信息”功能并调用成功后,在获取用户信息时获取不到用户的昵称?
部分支付宝用户没有设置昵称,故获取不到用户昵称。
小程序可以同时获取手机号、头像、昵称等公开信息吗?
不能在同一个弹框中同时获取会员手机号和头像、昵称。
可分别获取会员手机号,和获取用户头像及昵称。
“获取会员基础信息” 可以获取支付宝用户的 user_id 吗?
不可以。获取支付宝用户的 user_id 需要在服务器端调用 alipay.system.oauth.token 。
“获取会员基础信息”可以获取用户身份证、真实姓名等信息吗?
不可以。“获取会员基础信息”只能获取用户头像、昵称、性别、所在地区等信息。
小程序获取会员基础信息时弹出两次授权窗,如何处理?
正常获取会员基础信息需要弹窗两次进行授权确认:一次是 my.getAuthCode 获取用户授权码的授权框, 另一次是 my.getOpenUserInfo 中获取用户基础信息的授权框。
my.getAuthCode 使用静默授权方法(令 scopes 为 auth_base)即可实现只出现一个授权弹框。示例代码如下:
my.getAuthCode({
scopes: ['auth_base'],
success: (res) => {
my.alert({
content: res.authCode,
});
},
});