支付寶小程序 獲取會員信息的方法
2018-01-08
導(dǎo)讀:支付寶小程序 獲取會員信息是開發(fā)支付寶小程序很重要的一步,從而商家可以通過這樣的步驟獲取商家的利益,下面是具體的操作步驟: 開發(fā)者可以通過國際標(biāo)準(zhǔn)的OAuth2.0授權(quán)機制,在...
支付寶小程序 獲取會員信息是開發(fā)支付寶小程序很重要的一步,從而商家可以通過這樣的步驟獲取商家的利益,下面是具體的操作步驟:
開發(fā)者可以通過國際標(biāo)準(zhǔn)的OAuth2.0授權(quán)機制,在用戶授權(quán)的情況下,得到用于換取用戶信息的令牌。在拿到用戶的授權(quán)令牌后,通過調(diào)用用戶信息共享接口,獲取用戶的公開信息。
開發(fā)者可以通過國際標(biāo)準(zhǔn)的OAuth2.0授權(quán)機制,在用戶授權(quán)的情況下,得到用于換取用戶信息的令牌。在拿到用戶的授權(quán)令牌后,通過調(diào)用用戶信息共享接口,獲取用戶的公開信息。
1.1 準(zhǔn)入條件
小程序開發(fā)者均可使用。
1.2 計費模式
不收費。
1.3 案例
步驟一:用戶首次進入小程序首頁,若無進行業(yè)務(wù)交互,則無需喚起會員授權(quán)
步驟二:當(dāng)需要訪問用戶時,以彈框的形式確認授權(quán)(靜默授權(quán)不彈窗)。建議:用戶授權(quán)放在需要展示用戶相關(guān)信息的環(huán)節(jié),請勿一開始就引導(dǎo)授權(quán)。
步驟三:用戶確認授權(quán)后,可以在該小程序的會員中心查看會員信息,授權(quán)完成。
2. 接入指引
2.1 添加“獲取會員信息”功能
在小程序詳情頁的功能列表中添加“獲取會員信息”。
2.2 客戶端獲取authcode
my.getAuthCode({
scopes: 'auth_user', // 主動授權(quán):auth_user,靜默授權(quán):auth_base
success: (res) => {
if (res.authCode) {
// 認證成功
// 調(diào)用自己的服務(wù)端接口,讓服務(wù)端進行后端的授權(quán)認證,并且種session,需要解決跨域問題
my.httpRequest({
url: 'http://isv.com/auth', // 該url是自己的服務(wù)地址,實現(xiàn)的功能是服務(wù)端拿到authcode去開放平臺進行token驗證
data: {
authcode: res.authcode
},
success: () => {
// 授權(quán)成功并且服務(wù)器端登錄成功
},
fail: () => {
// 根據(jù)自己的業(yè)務(wù)場景來進行錯誤處理
},
});
}
},
});
2.3 服務(wù)端獲取access_token
服務(wù)器端調(diào)用alipay.system.oauth.token接口換取授權(quán)訪問令牌,開發(fā)者可通過獲取到的auth_code換取access_token和用戶ID。auth_code作為換取access_token的票據(jù),每次用戶授權(quán)完成,回調(diào)地址中的auth_code將不一樣,auth_code只能使用一次,一天未被使用自動過期。具體可參見文檔alipay.system.oauth.token。 開放平臺服務(wù)端SDK的java調(diào)用示例如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.setGrantType("authorization_code");
request.setCode("4b203fe6c11548bcabd8da5bb087a83b");
request.setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");
AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("調(diào)用成功");
} else {
System.out.println("調(diào)用失敗");
}
認證成功 把uid&token種到session中,在session有效期內(nèi)就不需要每次都走授權(quán)平臺進行驗證。
認證失敗 則返回失敗原因,需要再重新走授權(quán)流程。
注意 如果僅是為了授權(quán)或獲取用戶ID,那么到此授權(quán)結(jié)束。
2.4 服務(wù)端獲取會員信息
如果服務(wù)端要獲取用戶信息,那么不僅需要完成以上步驟——客戶端獲取authCode、authCode換取token,還需要token換取用戶信息,該步驟需使用接口:alipay.user.info.share。
注意: 服務(wù)端獲取的用戶信息進行落庫,jsapi獲取的用戶信息用來界面展示,不建議把前端獲取到用戶信息透傳給服務(wù)端。 代碼以java示例
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
AlipayUserInfoShareResponse response = alipayClient.execute(request,accessToken);
if(response.isSuccess()){
System.out.println("調(diào)用成功");
} else {
System.out.println("調(diào)用失敗");
}
2.5 客戶端獲取會員信息
前端通過 my.getAuthUserInfo 接口獲得的用戶信息主要是用來進行界面展示,如果想在數(shù)據(jù)庫存儲,請用上面步驟,服務(wù)器端接口調(diào)用流程進行獲取用戶信息。
my.getAuthCode({
scopes: 'auth_user',
success: (res) => {
my.getAuthUserInfo({
success: ({ nickName, avatar }) => {
console.log({ nickName, avatar })
}
});
},
});
返回字段:nickName, avatar
3. API列表
接口名稱 描述
my.getAuthCode 獲取用戶授權(quán)碼
alipay.system.oauth.token 換取授權(quán)訪問令牌
alipay.user.info.share 服務(wù)端獲取會員信息
my.getAuthUserInfo 客戶端獲取會員信息
4. 補充說明
服務(wù)端獲取不到會員信息
原因1:涉及到敏感信息如真實姓名、手機號、證件號等,這些敏感信息不會返回
原因2:調(diào)用的接口錯誤,請使用接口:alipay.user.info.share
獲取會員信息,服務(wù)端報 isv.invalid-token 無效 token
原因1:獲取授權(quán)碼scope 必須傳 auth_user
原因2:調(diào)用的接口錯誤,請使用接口:alipay.user.info.share
以上就是關(guān)于支付寶小程序獲取會員信息的操作步驟,更多關(guān)于支付寶小程序開發(fā)教程及使用教程如下:
支付寶入口在哪里打開,有哪些新的特性與微信相比
支付寶小程序開發(fā)文檔步驟
支付寶小程序發(fā)布流程如何
小程序最新資訊推薦:
拼多多小程序是如何借社交營銷來運營電商平臺
第二部分:如何開通一個小商店