如何获取access_token(授权访问令牌)

简介: 该步骤主要是为获取access_token(授权访问令牌),用于商户后续的业务逻辑调用,如获取支付宝用户信息、发放会员卡、闪电开票等。一、文档地址官方文档地址:[url]https://docs.

该步骤主要是为获取access_token(授权访问令牌),用于商户后续的业务逻辑调用,如获取支付宝用户信息、发放会员卡、闪电开票等。

一、文档地址

官方文档地址:[url]https://docs.open.alipay.com/289/105656[/url]

二、开发前准备工作

调用步骤:[url]https://openclub.alipay.com/read.php?tid=12194&fid=69[/url]

注意事项:1、支持沙箱测试;2、不需签约,不需要添加功能;3、支持第三方调用

三、接口调用流程

1、应用授权URL拼接

拼接规则:[url]https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL[/url]

(1)APPID:商户调用应用的appid

(2)scope:根据对应产品功能选择

auth_user:【获取用户信息】、【网站支付宝登录】 

auth_base:【用户信息授权】 

auth_ecard:【商户会员卡】 

auth_invoice_info:【支付宝闪电开票】 

auth_puc_charge:【生活缴费】 

auth_zhima:【芝麻评分】 

auth_user_assets:【菜品营销】

多个scope时用”,”分隔,如scope为”auth_user,auth_ecard”时,此时获取到的access_token, 既可以用来获取用户信息,又可以给用户发送会员卡。 

该参数详解:[url]https://openclub.alipay.com/read.php?tid=1795&fid=67[/url]

(3)redirect_uri:必须是应用中设置的授权回调地址

(4)state:商户自定义参数,用户授权后,重定向到redirect_uri时会原样回传给商户。

2、获取auth_code

用户访问拼接好的应用授权URL,授权成功后,会自动回调授权URL中设置的授权回调地址页面,即redirect_uri,获取授权成功后的app_auth_code。

3、获取access_token

获取access_token必须通过alipay.system.oauth.token(换取授权访问令牌) 接口调用获取。

具体代码调用方式参见换取授权访问令牌请求示例。

注:到此为止,用户信息授权结束,后续具体的功能根据对应接口对接

四、换取授权访问令牌请求示例

1、参数说明

(1)grant_type:

authorization_code表示换取auth_code。 

refresh_token表示刷新refresh_token。

(2)code:授权码,grant_type的值为authorization_code,该值必须填写。

参数值为授权后获取的auth_code;

(3)refresh_token:刷新令牌,grant_type值为refresh_token,该值不能为空。

参数值为此接口的响应参数refresh_token(至少需要通过grant_type=authorization_code调用此接口一次才能获取)。

注意事项:

以上参数是公共请求参数,该接口没有biz_content参数,必须通过request的方式传参。

2、JAVA版本请求示例

public static void main(String[] args) throws AlipayApiException {		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);		AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();		/**		 * 用户授权没有AlipaySystemOauthTokenModel,直接使用request		 */		//值为authorization_code时,代表用code换取;值为refresh_token时,代表用refresh_token换取		request.setGrantType("authorization_code");		//授权码,用户对应用授权后得到。即下面获取到的AccessToken		//每次用户授权完成,回调地址中的auth_code将不一样,auth_code只能使用一次,一天未被使用自动过期。 		request.setCode("1f80c8d6c21b4a8a94345e07d823QB89");		//刷新令牌,上次换取访问令牌时得到		//request.setRefreshToken("43e3bee07f354cc5a7780446412bSX75");		try {//		    AlipaySystemOauthTokenResponse response = alipayClient.execute(request);		    System.out.println(response.getBody());		} catch (AlipayApiException e) {		    //处理异常		    e.printStackTrace();		}	}

响应参数:

{"alipay_system_oauth_token_response":{"access_token":"composeBd364827b102144cf992fb7ce6e327X89","alipay_user_id":"2088102175794899","expires_in":600,"re_expires_in":660,"refresh_token":"composeBdefde11796f24938bafebefcf7834D89","user_id":"2088102175794899"},"sign":"NtsgUCZg04C5DdRnBdFSyFgg8K5pcFSnGbGV67zpo6tAuDEUB6421lAm2mdG8UHdO1PlLoSdSZmXgNZgin3bkjFe4hyOQUroPLb64whTCas5BsKBODL2s0+8LlrGnF7VJNkOSaWrDIh15DFNSKLvtA3gtvo3gvZK5gbY/428HzEE8HpBC85CEZuAA+0RsVXJvk/lvcXtAfjEKs5c1s45aOq8UmcH+HjAjmcPptNHokxYF+iY++xRgaypz7PeHMJsJNI8PS0CvznYySXwvHi9z/Ooav79X5gjjftqpd/2aSeUljbXdlf66LhcBaAFj8eT1r/Zkz+xQ2jE5M8i95HniQ=="}

3、PHP版本请求示例

$aop = new AopClient ();$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';$aop->appId = 'your app_id';$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串';$aop->alipayrsaPublicKey='请填写支付宝公钥,一行字符串';$aop->apiVersion = '1.0';$aop->signType = 'RSA2';$aop->postCharset='GBK';$aop->format='json';$request = new AlipaySystemOauthTokenRequest ();$request->setGrantType("authorization_code");$request->setCode("1f80c8d6c21b4a8a94345e07d823QB89");//$request->setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");$result = $aop->execute ( $request); echo json_encode($result);

响应参数:

{"alipay_system_oauth_token_response":{"access_token":"composeBd364827b102144cf992fb7ce6e327X89","alipay_user_id":"2088102175794899","expires_in":600,"re_expires_in":660,"refresh_token":"composeBdefde11796f24938bafebefcf7834D89","user_id":"2088102175794899"},"sign":"NtsgUCZg04C5DdRnBdFSyFgg8K5pcFSnGbGV67zpo6tAuDEUB6421lAm2mdG8UHdO1PlLoSdSZmXgNZgin3bkjFe4hyOQUroPLb64whTCas5BsKBODL2s0+8LlrGnF7VJNkOSaWrDIh15DFNSKLvtA3gtvo3gvZK5gbY/428HzEE8HpBC85CEZuAA+0RsVXJvk/lvcXtAfjEKs5c1s45aOq8UmcH+HjAjmcPptNHokxYF+iY++xRgaypz7PeHMJsJNI8PS0CvznYySXwvHi9z/Ooav79X5gjjftqpd/2aSeUljbXdlf66LhcBaAFj8eT1r/Zkz+xQ2jE5M8i95HniQ=="}

4、.NET版本请求示例

IAopClient client = new DefaultAopClient(config.gatewayUrl, config.app_id, config.private_key, "json", "1.0", "RSA2", config.alipay_public_key, config.charset, false);request.GrantType = "authorization_code";request.Code = "1f80c8d6c21b4a8a94345e07d823QB89";//request.RefreshToken = "201208134b203fe6c11548bcabd8da5bb087a83b";AlipaySystemOauthTokenResponse response=client.execute(request);Console.WriteLine(response.Body);

响应参数:

{"alipay_system_oauth_token_response":{"access_token":"composeBd364827b102144cf992fb7ce6e327X89","alipay_user_id":"2088102175794899","expires_in":600,"re_expires_in":660,"refresh_token":"composeBdefde11796f24938bafebefcf7834D89","user_id":"2088102175794899"},"sign":"NtsgUCZg04C5DdRnBdFSyFgg8K5pcFSnGbGV67zpo6tAuDEUB6421lAm2mdG8UHdO1PlLoSdSZmXgNZgin3bkjFe4hyOQUroPLb64whTCas5BsKBODL2s0+8LlrGnF7VJNkOSaWrDIh15DFNSKLvtA3gtvo3gvZK5gbY/428HzEE8HpBC85CEZuAA+0RsVXJvk/lvcXtAfjEKs5c1s45aOq8UmcH+HjAjmcPptNHokxYF+iY++xRgaypz7PeHMJsJNI8PS0CvznYySXwvHi9z/Ooav79X5gjjftqpd/2aSeUljbXdlf66LhcBaAFj8eT1r/Zkz+xQ2jE5M8i95HniQ=="}

五、注意事项

1、sope设置正确

不同的scopes的值对应的是不同的access_token,不同的token可调用不同的接口,token的效用也因此不一样,所以这些token切忌混用

该参数详解:[url]https://openclub.alipay.com/read.php?tid=1795&fid=67[/url]

2、auth_code有效期

auth_code只能使用一次,有效期目前至少为5分钟,最长为24小时,超时未使用自动过期。

3、access_token有效期

access_token截止时间=(授权时间点)+(授权后调用alipay.system.oauth.token返回的expires_in)

4、auth_base作用

scope参数中的auth_base(用户信息授权)用于静默授权,若单传该参数无法获取用户信息,必须配合auth_user(获取用户信息、网站支付宝登录)。

5、用户信息授权实现场景

获取会员信息集成流程:[url]https://openclub.alipay.com/read.php?tid=14599&fid=68[/url]

网站支付宝登录集成流程:[url]https://openclub.alipay.com/read.php?tid=14600&fid=68[/url]

6、用户如何取消授权

只能用户取消授权,商户取消授权方式如下:

地址:[url]https://openauth.alipay.com/auth/tokenManage.htm[/url]

7、沙箱授权URL拼接规则

拼接规则:[url]https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL[/url]

六、常见问题

1、Q:报错isv.invalid-token:无效的令牌?

A:排查方案:[url]https://openclub.alipay.com/read.php?tid=4738&fid=68&ant_source=zsearch[/url]

 

如果还是报错,请按如下方式进行提问:

正确提问方式:使用环境(沙箱还是正式环境)+接口名称(中文+英文)+ 请求参数 + 报错信息详情

 

目录
相关文章
|
1月前
|
存储 安全 API
在ModelScope中,访问令牌通常用于身份验证和授权
随着人工智能技术的发展,ModelScope(魔搭)作为开放的模型即服务(MaaS)平台,提供了丰富的预训练模型资源。本文介绍了如何在ModelScope中使用访问令牌进行身份验证和授权,包括获取和使用访问令牌的详细步骤及示例代码,确保用户安全地访问模型资源。
33 3
|
4月前
|
存储 运维 安全
函数计算产品使用问题之如何获取到访问其他阿里云服务所需的AccessKey、SecretKey或STS Token
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
安全 NoSQL Java
JWT和Security 登录权限判断和token访问和让token失效
JWT和Security 登录权限判断和token访问和让token失效
如何获取openid
如何获取openid
152 0
|
7月前
|
API 定位技术 开发者
【已解决】您所使用的密钥ak有问题,不支持jsapi服务,可以访问该网址了解如何获取有效密钥。
【已解决】您所使用的密钥ak有问题,不支持jsapi服务,可以访问该网址了解如何获取有效密钥。
140 0
【已解决】您所使用的密钥ak有问题,不支持jsapi服务,可以访问该网址了解如何获取有效密钥。
|
7月前
|
API Python
在ModelScope中,访问令牌通常用于身份验证和授权。
在ModelScope中,访问令牌通常用于身份验证和授权。
250 3
|
存储 JSON 安全
OAuth 详解<2> 什么是 OAuth 2.0 授权码授权类型?
授权代码授权类型可能是您将遇到的最常见的 OAuth 2.0 授权类型。Web 应用程序和本机应用程序都使用它在用户授权应用程序后获取访问令牌。 这篇文章是我们探索常用的 OAuth 2.0 授权类型系列文章的第一部分。如果您想在深入了解 OAuth 2.0 之前稍微回顾一下并了解更多信息,请查看OAuth 到底是什么?
162 0
OAuth 详解<2> 什么是 OAuth 2.0 授权码授权类型?
|
安全 API 数据安全/隐私保护
详谈微信网页授权access_token与普通access_token区别
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
详谈微信网页授权access_token与普通access_token区别
|
Java
如何获取第三方应用授权app_auth_token
一,说明    1.第三方应用文档:[url]https://docs.open.alipay.com/20160728150111277227/intro[/url]     2.作用:代替商户发起相关逻辑请求 二,配置    1.
5195 12