使用者授權分為靜默授權與主動授權
1,靜默授權(scope = auth_base)可以擷取到使用者的什麼資訊呢?
使用靜默授權可以擷取到使用者的UserId以及scope是auth_base的token令牌。
這個在什麼情況下使用呢?
例如:在小程式需要對使用者進入小程式的時候就需要使用者的UserId來進行标記,然後就可以使用該授權方式,并且直接使用,不會彈出授權窗。避免了首頁不能彈出授權窗的尴尬。
2,主動授權(scope = auth_user)可以擷取到的使用者的資訊可以參考文檔:[url]https://docs.open.alipay.com/api_2/alipay.user.info.share[/url] 主要是擷取使用者的頭像avatar、nick_name、user_id
3,正常小程式授權流程:
- 前端中擷取到使用者的授權code碼。
my.getAuthCode({ scopes: 'auth_user', success: ({ authCode }) => { my.alert({ content: authCode, }); }, });
- 在前端擷取到的authCode傳到服務端後調用接口
public void getAuth_token() { AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); request.setCode("460c52fbe3c64be28fd9c9d0e4acTX10"); request.setGrantType("authorization_code"); try { AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClientSmallMember.execute(request); if (oauthTokenResponse.isSuccess()) { System.out.println("調用成功" + oauthTokenResponse.getBody()); } else { System.out.println("調用失敗" + oauthTokenResponse.getSubMsg()); } System.out.println(oauthTokenResponse.getAccessToken()); getUserInfo(oauthTokenResponse.getAccessToken()); } catch (AlipayApiException e) { // 處理異常 e.printStackTrace(); } }
- 擷取到的accessToken令牌去調用擷取使用者資訊的接口
正常擷取到使用者的資訊,然後傳到前端進行展示使用。public void getUserInfo(String token) { AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest(); AlipayUserInfoShareResponse response; try { response = alipayClientXiaorong.execute(request,token); if(response.isSuccess()){ System.out.println("調用成功" + response.getBody()); } else { System.out.println("調用失敗"+ response.getBody()); } } catch (AlipayApiException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
4,ISV商戶調用使用者授權接口需要注意的點:
a,前端使用的為模闆ID
b,服務端使用的為第三方應用的Appid
c,并且第三方應用對模闆發起授權擷取到APPAUTHTOKEN
d,代碼中需要alipayClient.execute(request,null,APPAUTHTOKEN)這樣進行調用接口。
5,常見問題
Q:無效的通路令牌
A:scope指派的資訊,與後面調用的接口是不比對的,例如:scope用的是auth_user,結果後面調用的接口并非alipay.user.info.share,而是芝麻的接口; 擷取會員資訊,服務端報 isv.invalid-token 無效 token 原因1:擷取授權碼scope 必須傳 auth_user 原因2:調用的接口錯誤,請使用接口:alipay.user.info.share 你先檢查下,發現實在還是解決不了,再把相關的請求資訊提供過來,我們幫你查 來源位址:[url]https://openclub.alipay.com/read.php?tid=6629&fid=66[/url]、[url]https://docs.alipay.com/mini/introduce/auth#4-[/url]補充說明。
Q: 為什麼不允許小程式打開就讓使用者授權擷取阿裡的id呢??小程式駁回了
A:小程式禁止首屏強制授權框,建議使用靜默授權擷取使用者的UserId,來進行後面的業務的操作。
Q:擷取使用者資訊可以擷取到用的手機号嗎
A:手機号屬于使用者的私密資訊,由于安全的問題,是不能擷取到的。