用户授权流程以及常见问题

简介: 用户授权分为静默授权与主动授权1,静默授权(scope = auth_base)可以获取到用户的什么信息呢?使用静默授权可以获取到用户的UserId以及scope是auth_base的token令牌。

用户授权分为静默授权与主动授权

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,正常小程序授权流程:

  1. 前端中获取到用户的授权code码。
    my.getAuthCode({
          scopes: 'auth_user',
          success: ({ authCode }) => {
            my.alert({
              content: authCode,
            });
          },
        });​
  2. 在前端获取到的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();
    		}
    	}​
  3. 获取到的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:手机号属于用户的私密信息,由于安全的问题,是不能获取到的。

目录
相关文章
|
4月前
|
Java
钉钉第三方扫码登录提示 code: 403, 没有调用该接口的权限,接口权限申请参考
钉钉第三方扫码登录提示 code: 403, 没有调用该接口的权限,接口权限申请参考 ,但是我明明申请了Contact.User.Read 这个权限
182 1
|
4月前
|
小程序 API 开发者
微信小程序授权登录流程以及应用到的API
微信小程序授权登录流程以及应用到的API
199 0
|
5月前
|
小程序 安全 JavaScript
微信小程序授权登录--流程讲解
微信小程序授权登录--流程讲解
263 0
|
SQL XML JSON
【笔记】API参考—账号管理—ModifyAccountPrivilege
调用ModifyAccountPrivilege接口修改普通账号的权限。
|
XML JSON 安全
【笔记】API参考—账号管理—DeleteAccount
调用DeleteAccount接口删除普通账号。
|
SQL XML JSON
API参考—账号管理—CreateAccount
调用CreateAccount接口创建普通账号。
129 0
|
XML JSON 安全
API参考—账号管理—DescribeAccountList
调用DescribeAccountList接口查询实例的账号信息。
140 0
|
XML JSON API
【笔记】API参考—账号管理—ModifyAccountDescription
调用ModifyAccountDescription接口修改实例的账号描述信息。
|
5月前
|
存储 Java Shell
shell脚本入门之【变量的定义】
shell脚本入门之【变量的定义】
|
7月前
|
数据可视化 前端开发 安全
应用开发组件功能介绍(三)
应用开发组件功能介绍(三)
231 0