静默授权与主动授权区别、使用场景以及常见问题。

简介: 静默授权与主动授权对于用户来说的区别静默授权用户是没有感知的,实际商户是悄悄的就把用户的user_id(PID)获取到主动授权用户是有感知的并且需要用户去进行点击授权确定按钮的,用户如果不经授权的话,商户是拿不到用户的信息的。

静默授权与主动授权对于用户来说的区别

  1. 静默授权用户是没有感知的,实际商户是悄悄的就把用户的user_id(PID)获取到
  2. 主动授权用户是有感知的并且需要用户去进行点击授权确定按钮的,用户如果不经授权的话,商户是拿不到用户的信息的。

静默授权与主动授权对于商户来说的区别

  1. 静默授权商户只能拿到用户的user_id(PID)这个信息
  2. 主动授权商户可以拿到用户的user_id(PID)、头像、昵称等信息

静默授权与主动授权对于小程序审核的区别

  1. 静默授权在小程序中的任何地方都可以任意调用授权的,都不会影响审核
  2. 主动授权不能在小程序首页直接弹出授权窗进行授权的

静默授权与主动授权scope的区别

  1. 静默授权scope=auth_base
  2. 主动授权scope=auth_user(会员信息)、auth_ecard(会员卡)、auth_invoice_info(支付宝闪电开票)、auth_puc_charge(生活缴费)

静默授权与主动授权使用场景

  1. 静默授权主要使用场景为商户获取用户的user_id(PID)来进行区分用户
  2. 主动授权主要使用场景为商户获取用户的信息例如昵称头像,进行个人信息的展示,以及会员卡开卡,闪电开票,生活缴费等功能

静默授权与主动授权的代码示例

静默授权:在前端进行静默授权获取到code码

 

my.getAuthCode({
      scopes: 'auth_base',
      success: ({ authCode }) => {
        console.log('App Hide:   ' + JSON.stringify(authCode));
      },
    });
  },

把code码传到前端使用alipay.system.oauth.token(换取授权访问令牌)

AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
    	request.setGrantType("authorization_code");
    	request.setCode("7f7d1f4b47894014b3eb9043c2caUB10");
//    	request.setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");
    	AlipaySystemOauthTokenResponse response;
		try {
			response = alipayClient.execute(request,null,APPAUTHTOKEN);
			if(response.isSuccess()){
		    	System.out.println("调用成功" + response.getBody());
		    } else {
		    	System.out.println("调用失败"+ response.getCode());
		    }
		} catch (AlipayApiException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

返回response值:

{"alipay_system_oauth_token_response":{"access_token":"authbseB77127d297e7a47e7b64060ea38c64X10","alipay_user_id":"20880049095928573054948551013310","expires_in":31536000,"re_expires_in":31536000,"refresh_token":"authbseBbaa44351529c48f9b0a9e585a8668D10","user_id":"2088802394200105"},"sign":"iSFOsNrZGR/3swD0KuJJE2t/t4gWWJxWAN9tHeMyZSugotBMyDLEfmRuF1K4eCmOCbFPAPye/0kGdwJfYCXD7JDH09X4Lku6brhU6yHnY7jouRpnbFltRTcSk2cgMbnHdNp3Xmf6HzaoNeGTM4zvxTZqFcMmjbKAbKxbdUvCjT+U362yjvywGGvrFXxb7i+0NoT8wgJ3UJG/s6yiLLhN6GHeD68k8uA6nqR8xz5xefiZd6156nNtXQaGMpfn7jOvU6hSlQR0kWd9DZNxqHqoTSej9u0/Qeh5uAsIQVqHKcL9Ou5TbyZ10IyEg+R4rlG6dS9r6FFT81tnIQCFEVZl4g=="}

其中令牌值的前缀为authbse

主动授权(获取会员信息为例)

my.getAuthCode({
      scopes: 'auth_user',
      success: ({ authCode }) => {
        console.log('App Hide:   ' + JSON.stringify(authCode));
      },
    });

把code码传到前端使用alipay.system.oauth.token(换取授权访问令牌)

和静默授权一致。

获取到的返回response值:

{"alipay_system_oauth_token_response":{"access_token":"authusrB3eac6725350f462e9cf1e904d600cC10","alipay_user_id":"20880049095928573054948551013310","expires_in":1296000,"re_expires_in":2592000,"refresh_token":"authusrBcb0cb1a1bdd4483f9fcd431242f8fC10","user_id":"2088802394200105"},"sign":"ZtLQhs2WFN3HFyt76Sv2zPMqN7HF+KsVM1YaV1anh7ziA69e9ibtVf/YCcH+64rG5L5U8NGArxEnLrMXIQmW5ZIlQ/zzzlsSH6IZJy+Z26ABFdcHCn3lkEY3q7KThAFPExZhxtkupV8mUGPaZxrue+LSd5ypWiVYjDGJgPiU8hAYwVTzxGumtdeEpS6gp7JgU3X72LENOuPUfwSJARLzAre9aMSRwxrDfQRdUJgqIueUNXqQnd7Zvd6MHl9Yck64xyyywkqPaZ21+bPgwwXdL7ng8o3WUPUUbNbH8KZMWicUiwRAoYRORT+pn5sYC9cJjPmz2QQlyubjlib8lvMs/Q=="}

其中令牌值的前缀为authusr

然后根据令牌获取用户的信息,调用alipay.user.info.share(支付宝会员授权信息查询接口)

AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
		AlipayUserInfoShareResponse response;
		try {
			response = alipayClient.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();
		}

返回response值:

{
    "alipay_user_info_share_response": {
        "code": "10000",
        "msg": "Success",
        "user_id": "2088102104794936",
        "avatar": "http://tfsimg.alipay.com/images/partner/T1uIxXXbpXXXXXXXX",
        "province": "安徽省",
        "city": "安庆",
        "nick_name": "支付宝小二",
        "is_student_certified": "T",
        "user_type": "1",
        "user_status": "T",
        "is_certified": "T",
        "gender": "F"
    },
    "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

 

 

授权经常遇到的问题

 Q:调用alipay.open.auth.token.app报无效的authcode 

 Q:小程序授权获取到的auth_code有效期是多久

 A:authCode只能使用一次,使用过后就会失效的,一天内不使用的话也会默认过期。

 Q:alipay.system.oauth.token 这个接口报grant_type不能为空

 A;调用这个接口的时候必须传这个grant_type的类型

setGrantType("authorization_code")表示使用授权code码换取令牌

setGrantType("refresh_token")表示使用刷新令牌来刷新所需要使用的令牌

 Q:alipay.system.oauth.token 报无效的appid参数

 A:如果是ISV商户的话,需要在调用接口的时候传入app_auth_token这个应用授权欧安token;如果不是ISV的话,需要检查传的APPID是否是小程序APPID

 Q:无效的应用授权令牌

 A:在调用获取用户信息或者会员卡等接口,获取授权码时scope值没有和产品相对应。可以参考上文中的 静默授权与主动授权scope的区别

目录
相关文章
|
5月前
|
缓存 运维 DataWorks
DataWorks常见问题之修改授权对象失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
5月前
|
SQL 安全 数据管理
DMS产品常见问题之执行任务流时报错如何解决
DMS(数据管理服务,Data Management Service)是阿里云提供的一种数据库管理和维护工具,它支持数据的查询、编辑、分析及安全管控;本汇总集中了DMS产品在实际使用中用户常遇到的问题及其相应的解答,目的是为使用者提供快速参考,帮助他们有效地解决在数据管理过程中所面临的挑战。
|
4月前
|
SQL DataWorks 数据管理
DataWorks操作报错合集之在查找支持实例错误的时候提示:无法承担用户的角色,请检查RAM角色配置,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
缓存 测试技术 持续交付
云效产品使用常见问题之批量给一个用户添加项目权限配置失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
监控 JavaScript 应用服务中间件
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
102 0
|
JSON 监控 Unix
License二次验证机制:管理公共集群上的Sentieon授权资源
License二次验证机制:管理公共集群上的Sentieon授权资源
183 0
|
安全 开发者
3. 该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定
公众号管理员添加开发者时,提醒:该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定
223 0
|
存储 NoSQL 数据库
认证授权流程及原理分析
认证授权流程及原理分析
215 0
|
安全 Java 数据库
案例之授权码模式测试|学习笔记
快速学习案例之授权码模式测试
187 0
案例之授权码模式测试|学习笔记
|
存储 JSON NoSQL
对比授权机制,你更想用哪种?(上)
授权机制,当我们说到这个问题的时候,大家对它的第一印象是在哪个地方呢?是不是曾经某培训机构教授的 SSO 单点登录的,是的没错,而这种 SSO 的单点登录在当年的培训机构中,使用的就是 Session 共享,也就是用 Redis 做中间模拟 Session ,但是授权机制真的有这么简单么?接下来阿粉就来强势对比一下关于授权机制了。
对比授权机制,你更想用哪种?(上)