支付寶小程序--如何獲取用戶信息
阿新 • • 發佈:2017-10-27
用戶授權 undefine access ava .info char 頭像 alipay tac
需要在開放平臺-開發者中心-我的應用-小程序-小程序詳情-開發管理-功能列表中,添加功能【獲取會員信息】。(不需要簽約)狀態為“已生效”,就可以擁有調用獲取會員信息的權限。 接著編寫獲取會員信息的代碼:
1.如果只是在客戶端上做展示用,則使用my.getAuthCode、my.getAuthUserInfo函數即可拿到用戶昵稱與用戶頭像。 小程序示例:
my.getAuthCode({ scopes: ‘auth_user‘, success: (res) => { //獲取用戶信息 my.getAuthUserInfo({ success: (res) => { my.alert(res.nickName); //獲取的用戶昵稱 my.alert(res.avatar); //獲取的用戶頭像圖片 } }); }, });
2.如果需要把信息存儲到數據庫中,則需要: 第一步:調用JSAPI:my.getAuthCode,獲取authcode; 代碼示例:
//獲取用戶信息
my.getAuthCode({
scopes: ‘auth_user‘, //授權類型,默認auth_base(靜默授權),支持auth_base/auth_user(主動授權)
success: (res) => {
my.alert(res.authCode); //獲取的autoCode授權碼
},
});
第二步:調用JSAPI:my.httpRequest,連接您自己的服務器;
代碼示例:
my.getAuthCode({ scopes: ‘auth_user‘, // 主動授權:auth_user,靜默授權:auth_base success: (res) => { if (res.authCode) { // 認證成功 // 調用自己的服務端接口,讓服務端進行後端的授權認證,並且種session,需要解決跨域問題 my.httpRequest({ url: ‘http://isv.com/auth‘, // 該url是自己的服務地址,實現的功能是服務端拿到authcode去開放平臺進行token驗證 data: { authcode: res.authcode }, success: () => { // 授權成功並且服務器端登錄成功 }, fail: () => { // 根據自己的業務場景來進行錯誤處理 }, });[/size] [size=3] [/size][size=2] } }, });
註意:使用my.httpRequest連接服務器需要解決跨域問題,需要在開放平臺-開發者中心-我的應用-小程序-小程序詳情-開發管理-設置中添加httpRequest域名白名單 第三步:在您的服務端,調用開放平臺接口alipay.system.oauth.token,用authcode換取token; 以JAVA代碼為例:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); request.setCode("2e4248c2f50b4653bf18ecee3466UC18"); request.setGrantType("authorization_code"); try { AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request); System.out.println(oauthTokenResponse.getAccessToken()); } catch (AlipayApiException e) { //處理異常 e.printStackTrace(); }
第四步:在您的服務端拿到token後,繼續調用開放平臺接口alipay.user.info.share,用token換取用戶信息。 以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("調用成功");
} else {
System.out.println("調用失敗");
}
第五步:把處理成功的狀態反饋回JSAPI中,並在小程序中展示 具體請看【小程序文檔用戶授權】
支付寶小程序--如何獲取用戶信息