支付寶小程序API 獲取會(huì)員基礎(chǔ)信息

2020-09-16 15:50 更新

my.getOpenUserInfo

簡(jiǎn)介

my.getOpenUserInfo 可獲取支付寶會(huì)員的基礎(chǔ)信息(頭像圖片地址、昵稱、性別、國家碼、省份、所在市區(qū))。

如需獲取支付寶會(huì)員標(biāo)識(shí)(user_id),請(qǐng)調(diào)用 my.getAuthCode 和 alipay.system.oauth.token 接口。

相關(guān)問題請(qǐng)參見下文 獲取會(huì)員基礎(chǔ)信息 FAQ。

使用限制

  • 本接口在 IDE 模擬器中返回的數(shù)據(jù)為虛擬數(shù)據(jù);真實(shí)數(shù)據(jù)請(qǐng)以真機(jī)調(diào)試效果為準(zhǔn)。
  • 基礎(chǔ)庫 1.16.4 或更高版本;支付寶客戶端 10.1.35 或更高版本,若版本較低,建議采取 兼容處理。
  • 本功能需要用戶主動(dòng)觸發(fā)才能激活,所以該功能不由 API 直接調(diào)用,需用 <button> 組件 的點(diǎn)擊來觸發(fā)。將 <button> 組件 open-type 的值設(shè)置為 getAuthorize,當(dāng)用戶點(diǎn)擊并同意之后,可以通過my.getOpenUserInfo 接口獲取到支付寶服務(wù)器返回的基礎(chǔ)信息,若用戶未授權(quán),直接調(diào)用my.getOpenUserInfo 接口,則無法返回正確信息。
  • 需添加 獲取會(huì)員基礎(chǔ)信息 功能后,才可調(diào)用此接口。
  • 不能通過 my.getOpenUserInfo 接口獲取支付寶會(huì)員標(biāo)識(shí)(user_id)。

示例代碼

喚起授權(quán)框,推薦兼容方案如下:

<!-- .axml -->
<button a:if="{{canIUseAuthButton}}" open-type="getAuthorize" 
onGetAuthorize="onGetAuthorize" onError="onAuthError" 
scope='userInfo'>
    會(huì)員基礎(chǔ)信息授權(quán)
</button>
Button 屬性說明

屬性 說明
open-type getAuthorize為授權(quán)組件(固定值)。
scope userInfo(固定值)。
onGetAuthorize 授權(quán)成功回調(diào)(在回調(diào)里可以調(diào)用獲取信息的接口)。
onError 授權(quán)失敗回調(diào)(包括用戶拒絕和系統(tǒng)異常)。

獲取用戶基礎(chǔ)信息

用戶點(diǎn)擊同意后,即可通過 my.getOpenUserInfo() 獲取用戶基礎(chǔ)信息:

// .js 
onGetAuthorize(res) {
     my.getOpenUserInfo({
      fail: (res) => {
      },
      success: (res) => {
        let userInfo = JSON.parse(res.response).response // 以下方的報(bào)文格式解析兩層 response
      }
    });
    },

您可以通過以下方式獲取用戶信息中的某個(gè)參數(shù)。

以獲取用戶信息中的昵稱為例:console.log(JSON.parse(res.response).response.nickName)

返回 res 報(bào)文格式

  • 成功返回 res 報(bào)文格式示例如下:

{"response": "{"response": {"code": "10000","msg": "Success","countryCode": "CN","gender": "f","nickName": "XXX","avatar": "https://tfs.alipayobjects.com/images/partner/XXXXXXXX","city": "南通市","province": "江蘇省"}}"}
  • 未接入“獲取用戶基礎(chǔ)信息”的功能包,返回 res 報(bào)文格式示例如下:

{"response":"{"response":{"code":"40003","msg":"Insufficient Conditions","subCode":"isv.invalid-auth-relations","subMsg":"無效的授權(quán)關(guān)系"}}"}

success 回調(diào)函數(shù)

入?yún)?res 對(duì)象,Object 類型,屬性被解析后如下表所示:

注:

- 在 IDE 0.70 或以上的版本支持返回全部 6 個(gè)參數(shù),由于安全原因,其中 avatar 和 nickName 是當(dāng)前登錄 IDE 用戶的真實(shí)值,其它 4 個(gè)屬性為 mock 數(shù)據(jù),在真機(jī)上上顯示為真實(shí)值。
- 若用戶未設(shè)置 avatar 和 nickName,則不會(huì)返回這兩個(gè)參數(shù)。

名稱 類別 類型 是否必填 描述
avatar 基礎(chǔ)類型 String 選填 頭像圖片地址
nickName 基礎(chǔ)類型 String 選填 昵稱
gender 基礎(chǔ)類型 String 必填 性別,男對(duì)應(yīng)“m”,女對(duì)應(yīng)“f”
countryCode 基礎(chǔ)類型 String 必填 國家碼
province 基礎(chǔ)類型 String 必填 省份
city 基礎(chǔ)類型 String 必填 所在市區(qū)

獲取會(huì)員基礎(chǔ)信息 FAQ

更新時(shí)間:2020-03-11 17:24:12

調(diào)用 my.getOpenUserInfo,報(bào)錯(cuò)“無效的授權(quán)關(guān)系”,如何處理?

用戶 主動(dòng)觸發(fā) 才能發(fā)起獲取會(huì)員基礎(chǔ)信息請(qǐng)求,不能由 API 直接獲取會(huì)員基礎(chǔ)信息,需使用 button 組件 的“點(diǎn)擊”動(dòng)作來觸發(fā)操作。需要將 <button> 組件 open-type 的值設(shè)置為 getAuthorize,并將 scope 設(shè)為 userinfo ,示例代碼如下:

<!-- .axml -->
<button a:if="{{canIUseAuthButton}}" open-type="getAuthorize" 
onGetAuthorize="onGetAuthorize" onError="onAuthError" 
scope='userInfo'>
    會(huì)員基礎(chǔ)信息授權(quán)
</button>

“獲取會(huì)員信息”、“獲取會(huì)員基礎(chǔ)信息”兩個(gè)功能包有什么區(qū)別?

自 2019 年5月25日 起,已不再支持添加“獲取會(huì)員信息”功能包。

已添加“獲取會(huì)員信息”功能包的小程序,在使用“獲取會(huì)員基礎(chǔ)信息”功能之前,仍需添加“獲取會(huì)員基礎(chǔ)信息”功能包。

調(diào)用 alipay.user.info.share 報(bào)錯(cuò)“ISV 權(quán)限不足”如何處理?

alipay.user.info.share 是“獲取會(huì)員信息”功能包中使用的 API?!矮@取會(huì)員信息”功能包已于2019 年5月25日升級(jí),在此日期之前未簽約“獲取會(huì)員信息”功能包的小程序無法再調(diào)用 alipay.user.info.share,請(qǐng)使用“獲取會(huì)員基礎(chǔ)信息”功能包。

調(diào)用 my.getOpenUserInfo 報(bào)錯(cuò) "ISV權(quán)限不足"如何處理?

“獲取會(huì)員信息”功能包已下架,若之前創(chuàng)建的應(yīng)用已添加了“獲取會(huì)員信息”的功能包則能正常調(diào)用接口,未添加的則無法再添加此功能。 新創(chuàng)建的應(yīng)用請(qǐng)使用 獲取會(huì)員基礎(chǔ)信息 my.getOpenUserInfo 接口。

\1. 在小程序開發(fā)管理后臺(tái)的 功能列表 中,點(diǎn)擊 添加功能。

添加功能.png

\2. 添加 獲取會(huì)員基礎(chǔ)信息 功能包。

獲取會(huì)員基礎(chǔ)信息.png

為什么接入“獲取會(huì)員基礎(chǔ)信息”功能并調(diào)用成功后,在獲取用戶信息時(shí)獲取不到用戶的昵稱?

部分支付寶用戶沒有設(shè)置昵稱,故獲取不到用戶昵稱。

小程序可以同時(shí)獲取手機(jī)號(hào)、頭像、昵稱等公開信息嗎?

不能在同一個(gè)彈框中同時(shí)獲取會(huì)員手機(jī)號(hào)和頭像、昵稱。

可分別獲取會(huì)員手機(jī)號(hào),和獲取用戶頭像及昵稱。

“獲取會(huì)員基礎(chǔ)信息” 可以獲取支付寶用戶的 user_id 嗎?

不可以。獲取支付寶用戶的 user_id 需要在服務(wù)器端調(diào)用 alipay.system.oauth.token 。

“獲取會(huì)員基礎(chǔ)信息”可以獲取用戶身份證、真實(shí)姓名等信息嗎?

不可以?!矮@取會(huì)員基礎(chǔ)信息”只能獲取用戶頭像、昵稱、性別、所在地區(qū)等信息。

小程序獲取會(huì)員基礎(chǔ)信息時(shí)彈出兩次授權(quán)窗,如何處理?

正常獲取會(huì)員基礎(chǔ)信息需要彈窗兩次進(jìn)行授權(quán)確認(rèn):一次是 my.getAuthCode 獲取用戶授權(quán)碼的授權(quán)框, 另一次是 my.getOpenUserInfo 中獲取用戶基礎(chǔ)信息的授權(quán)框。

my.getAuthCode 使用靜默授權(quán)方法(令 scopes 為 auth_base)即可實(shí)現(xiàn)只出現(xiàn)一個(gè)授權(quán)彈框。示例代碼如下:

my.getAuthCode({
  scopes: ['auth_base'],
  success: (res) => {
    my.alert({
      content: res.authCode,
    });
  },
});
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)