用户授权分为静默授权与主动授权
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:手机号属于用户的私密信息,由于安全的问题,是不能获取到的。