开发者社区> 扬朋> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

如何获取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时会原样回传给商户。

68_25168_808cd049d1a5056.png

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]

68_25168_78506198c00676a.png

7、沙箱授权URL拼接规则

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

68_25168_fc5470d09bf608a.png

六、常见问题

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

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

 

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

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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python 技术篇-百度语音API鉴权认证获取Access Token实例演示
Python 技术篇-百度语音API鉴权认证获取Access Token实例演示
131 0
如何创建一个新浪微博应用以及获得Access token
如何创建一个新浪微博应用以及获得Access token
38 0
如何创建一个新浪微博应用以及获得Access token
如何创建一个新浪微博应用以及获得Access token
40 0
使用java代码获取新浪微博应用的access token
使用java代码获取新浪微博应用的access token
32 0
使用java代码获取新浪微博应用的access token
使用java代码获取新浪微博应用的access token
46 0
SAP Spartacus OCC 请求头部的 Access Token 是如何被添加的
SAP Spartacus OCC 请求头部的 Access Token 是如何被添加的
40 0
java微信接口之——获取access_token
一、微信获取access_token接口简介   1、请求:该请求是GET方式请求,所以要携带的参数都是附加到url后面传递给微信服务器。请求的url格式如下:     https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET    其中,APPID与APPSECRET都我们开发的时候自己帐号申请的。
1148 0
+关注
扬朋
支付宝小程序开发者运营专家
516
文章
69
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载