W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
支付寶小程序 獲取會(huì)員信息
[TOC]
開發(fā)者可以通過國際標(biāo)準(zhǔn)的OAuth2.0授權(quán)機(jī)制,在用戶授權(quán)的情況下,得到用于換取用戶信息的令牌。在拿到用戶的授權(quán)令牌后,通過調(diào)用用戶信息共享接口,獲取用戶的公開信息。
小程序開發(fā)者均可使用。
不收費(fèi)。
步驟一:用戶首次進(jìn)入小程序首頁,若無進(jìn)行業(yè)務(wù)交互,則無需喚起會(huì)員授權(quán)
步驟二:當(dāng)需要訪問用戶時(shí),以彈框的形式確認(rèn)授權(quán)(靜默授權(quán)不彈窗)。建議:用戶授權(quán)放在需要展示用戶相關(guān)信息的環(huán)節(jié),請勿一開始就引導(dǎo)授權(quán)。
步驟三:用戶確認(rèn)授權(quán)后,可以在該小程序的會(huì)員中心查看會(huì)員信息,授權(quán)完成。
在小程序詳情頁的功能列表中添加“獲取會(huì)員信息”。
my.getAuthCode({
scopes: 'auth_user', // 主動(dòng)授權(quán):auth_user,靜默授權(quán):auth_base
success: (res) => {
if (res.authCode) {
// 認(rèn)證成功
// 調(diào)用自己的服務(wù)端接口,讓服務(wù)端進(jìn)行后端的授權(quán)認(rèn)證,并且種session,需要解決跨域問題
my.httpRequest({
url: 'http://isv.com/auth', // 該url是自己的服務(wù)地址,實(shí)現(xiàn)的功能是服務(wù)端拿到authcode去開放平臺進(jìn)行token驗(yàn)證
data: {
authcode: res.authcode
},
success: () => {
// 授權(quán)成功并且服務(wù)器端登錄成功
},
fail: () => {
// 根據(jù)自己的業(yè)務(wù)場景來進(jìn)行錯(cuò)誤處理
},
});
}
},
});
服務(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只能使用一次,一天未被使用自動(dòng)過期。具體可參見文檔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)用失敗");
}
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)用失敗");
}
前端通過 my.getAuthUserInfo 接口獲得的用戶信息主要是用來進(jìn)行界面展示,如果想在數(shù)據(jù)庫存儲(chǔ),請用上面步驟,服務(wù)器端接口調(diào)用流程進(jìn)行獲取用戶信息。
my.getAuthCode({
scopes: 'auth_user',
success: (res) => {
my.getAuthUserInfo({
success: ({ nickName, avatar }) => {
console.log({ nickName, avatar })
}
});
},
});
返回字段:nickName, avatar
接口名稱 | 描述 |
---|---|
my.getAuthCode | 獲取用戶授權(quán)碼 |
alipay.system.oauth.token | 換取授權(quán)訪問令牌 |
alipay.user.info.share | 服務(wù)端獲取會(huì)員信息 |
my.getAuthUserInfo | 客戶端獲取會(huì)員信息 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: