如何使用沙箱测试用户信息授权(php版)

来自    用户与第三方授权 | 
作者:我是个导演  |  更新于:2017-08-16 14:08:07     
说明:
  用户信息授权主要是为了获取支付宝用户ID(USER_ID)、授权令牌(access_token),便于开发者处理自身业务逻
  辑的时候使用。
  测试环境:Apache2.4.23 +php 5.6.25
  开发文档地址:【查看
  服务端SDK地址:【下载
  如何判断自己使用的接口需要签约:【查看

支持授权方式:
  PC端授权和H5授权页面授权(H5只支持在使用支付宝钱包进行授权

参数解读:
  1.scope说明:【查看
  2.redirect_uri说明:
    1)URLENCODE转义 的url链接(url必须以http或者https开头)
    2)授权回调地址,一定要配置(如下图)的值
      
测试流程:
  1.用户信息授权URL拼接
   注意:正式环境请修改网关去掉链接中的dev
https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=填写沙箱的appid&scope=auth_user&redirect_uri=填写授权回调地址

  2.获取auth_code
    1)访问浏览器访问拼接授权URL
      
    2)选择授权
      
    3)授权成功跳转回调页面,查看授权地址栏返回信息获取auth_code,选择复制
      
    注意:
      auth_code:临时授权码,一次性有效,同时若超过有效期未使用,则会失效。
      有效期目前至少为5分钟,最长为24小时。
     4)放到如下代码中(使用auth_code换取接口access_token及用户userId):
    
<?php
//第一步拼接授权链接.注意scope=auth_user的值一定要为auth_user 传别的值会报错无效授权令牌
//https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=2016072800109035&scope=auth_user&redirect_uri=https%3A%2F%2Fwww.alipay.com
require_once 'AopSdk.php';
$aop = new AopClient();
$aop->appId = '填写你的沙箱appid';
$aop->rsaPrivateKey = '填写您的原始私钥';
$aop->alipayrsaPublicKey='填写您的支付宝公钥';
$aop->gatewayUrl = 'https://openapi.alipaydev.com/gateway.do';
$aop->apiVersion = '1.0';
$aop->postCharset='utf-8';
$aop->format='json';
$aop->signType = 'RSA2';
//第二步使用auth_code换取接口access_token及用户userId
$request = new AlipaySystemOauthTokenRequest();
//请求的必传信息
$request->setGrantType("authorization_code");
$request->setCode("4cea6ad64013486db6df44b18828SX77");
$result = $aop->execute($request);
var_dump($result);

     5)请求成功返回
    
public 'alipay_system_oauth_token_response' => 
   object(stdClass)[10]
     public 'access_token' => string 'authusrB10494a8d6a77483c94092ff47af20B24' (length=40)
     public 'alipay_user_id' => string '2088102168729244' (length=16)
     public 'expires_in' => int 600
     public 're_expires_in' => int 660
     public 'refresh_token' => string 'authusrB188acaecd9fa478a807087f39f666X24' (length=40)
     public 'user_id' => string '2088102168729244' (length=16)
 public 'sign' => string 'xxxxxxxxxxxxxxxxxxxxxxxx'

至此,用户信息授权流程已结束,如果只想拿到user_id 和access_token(支付宝用户唯一标识符)。

DEMO分享(
声明:demo仅做参考使用):AlipaySystemOauthToken-UTF-8.zip
有什么问题欢迎在帖子下面追问
甘甘1121 | 2017-10-12 09:24:32
我获取到的access_token去查询zhima.credit.score.get(芝麻信用评分),一直返回“无效的访问令牌”哇!~~~
我是个导演 | 2017-10-12 09:37:23
甘甘1121:我获取到的access_token去查询zhima.credit.score.get(芝麻信用评分),一直返回“无效的访问令牌”哇!~~~回到原帖
你可以提供一下你拼接的授权链接+测试环境+请求参数+返回的报错信息,如果方便再带上你代码传access_token 的方法截图或者代码片段,方便判断问题
甘甘1121 | 2017-10-12 09:49:55
我是个导演:你可以提供一下你拼接的授权链接+测试环境+请求参数+返回的报错信息,如果方便再带上你代码传access_token 的方法截图或者代码片段,方便判断问题回到原帖
授权链接:
https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=2016081500253510&scope=auth_user,auth_base,auth_puc_charge,auth_ecard,auth_invoice_info&redirect_uri=http%3a%2f%2fylwines.cn%2falipay%2falipayCallback.php




get app id : 2016081500253510 , auth code : c85fc4f23f70452b95c29398c3b8ZX05

session refresh token : composeB838292bb6b2449d98cfbf6ccc4dfaA05

stdClass Object ( [alipay_system_oauth_token_response] => stdClass Object ( [access_token] => composeB20b7de8785d245f5bb7578969c617B05 [alipay_user_id] => 2088102174861059 [expires_in] => 500 [re_expires_in] => 300 [refresh_token] => composeB838292bb6b2449d98cfbf6ccc4dfaA05 [user_id] => 2088102174861059 ) [sign] => eMtFhVrchD9nuzuRV8kFe1ZgQh//mVVVOFH9cJh3CY6z3IfGQck8I5BTm98cLVR8Nn0fjxvel66qa61Va5Sac7Gb2BDZ+M+Fc4tRYGXeT0TVG1ArVJdLU5YHDpSupfa0Dad/uwO+sNKopM835GLwubg/lm290C1aV3tYgjJK+1GsDs1CADQ7SkUNO9ldypzFE+zMZMUM3daEc5G6EyQ1w14ixdvg+xJAO0v4hlb8hiqvwkicgwDJpXi2rse/xnY6Uh4dNGaQMjPmW1Bj0Ar1mgGVFcm7cZwWlsl3KyE3L1wy4Iy1Ut8XfYj9agHp7Lqg1he5ol52BJjS8VHAVgS64A== ) get token 成功
accessToken : composeB20b7de8785d245f5bb7578969c617B05


stdClass Object ( [alipay_user_info_share_response] => stdClass Object ( [code] => 10000 [msg] => Success [gender] => m [is_certified] => T [is_student_certified] => F [user_id] => 2088102174861059 [user_status] => T [user_type] => 2 ) [sign] => sebrVqnSlA+/dESHMapV2Awp7bET8IaMjMDAkXV8XTtqIUOYQ4kMBK6LJe3eKNXSjfZQOuV0pTnwvMQNLfW95mWyStJFpLMEW+Lwn3bYoM5jGMQ6BYYwH5mYeIyI2ibTxWvWrMcpkGOkDI/GCiwonyAciVM4coMqxT7NsPoMBqNZLCT57vU1u2wae7eRGQNmwi52iUq6P6iNpCXS10kWz3ovYcJbeQ0lP6VGYO7lXCGqoMVoZ79O6TRHjNTTwU0vrF7Nz7uDAlhDFZUGEfQnnA3rVPdn+o2DT4RjvDueNER1KYmkvLM1OyNIx0ACnZFHijuo1qYx+JmGWindWsFq7g== ) AlipayUserInfoShareRequest成功


stdClass Object ( [zhima_auth_info_authquery_response] => stdClass Object ( [authorized] => true [code] => 10000 [msg] => Success ) [sign] => NHgqpEzL3aCfwZ6FFQUkhAmY1y8hE9rdOauwYNvgK1aLLTgcS7nlTMhmLoZMPI5VyQS9pnmcUbgQ9k2IHLCEulL0dhyP09o0WKzdOuIkrCS9veBOYXc/elb3NZhyRdLw+O/lMCkcENoc/DPshYT73fcdpgEGwS9GZad4P+LSytMPUHSMRHEwg0YKfcgjezZJyRTwQiFDtoo7pHBGKjT9pXaXYYXQt0oPGViSG5o3NvALyrM77jsJPgAFI29uhe6D/Mpxkt8KdpkopRPOHdsRwRR6tLgbDbk7HLnNPphtqFjuGSZOxxc7ptjWA/a82j44epcpbSFF4m+tiWUmN9pjNg== ) ZhimaAuthInfoAuthqueryRequest成功


stdClass Object ( [zhima_credit_score_get_response] => stdClass Object ( [code] => 20001 [msg] => Insufficient Token Permissions [sub_code] => aop.invalid-auth-token [sub_msg] => 无效的访问令牌 ) [sign] => E6TO5wrVmWYxJOkD1gwtAzqnA/hBQ9KkRoFAuuCG26X9ZbcuKuRTAeBquVYnfn85+Ncz6QdsLZDXGE+cUbQCab0EcvcOLLsva3N+8i29VkV+x9QnPyzLA3jdMwiOFuV02DppDuTLFapr2ZVlJBaYQ8b5y0PghiPyvfQbxiinuXub/yzb6ul26yI0E5S9x2mKF0eqf+VpAaPvjPcbvZceMYq/YecCBnNDH4CgaxD+YOrx3J+3sWMxWUEyNZANmeB6HBzGgd7IalPzf9X/LSVp55Ti0BGAQ4bVZcoTPi+FnBmzUTX6YVHVSGypXw+Oq+/iMsAacfk2eaOiSpD7827FLQ== ) get zhima credit score 失败
甘甘1121 | 2017-10-12 10:05:59
我是个导演:你可以提供一下你拼接的授权链接+测试环境+请求参数+返回的报错信息,如果方便再带上你代码传access_token 的方法截图或者代码片段,方便判断问题回到原帖
这是主要代码:

我是个导演 | 2017-10-12 10:41:27
甘甘1121:这是主要代码:回到原帖
授权时芝麻信用授权scope填写 auth_zhima  你这边填写的是scope=auth_user,auth_base 所以需要你修改一下。有疑问再追问
甘甘1121 | 2017-10-12 10:54:36
我是个导演:授权时芝麻信用授权scope填写 auth_zhima  你这边填写的是scope=auth_user,auth_base 所以需要你修改一下。有疑问再追问回到原帖
哦哦,好的,接口文档都没有写auth_zhima,我试了scope只填auth_zhima,授权页面不一样了,但是授权回调后,要么是返回了系统繁忙,要么是无效的访问令牌...
甘甘1121 | 2017-10-12 10:59:51
甘甘1121:哦哦,好的,接口文档都没有写auth_zhima,我试了scope只填auth_zhima,授权页面不一样了,但是授权回调后,要么是返回了系统繁忙,要么是无效的访问令牌...回到原帖
我是个导演 | 2017-10-12 11:00:48
甘甘1121:哦哦,好的,接口文档都没有写auth_zhima,我试了scope只填auth_zhima,授权页面不一样了,但是授权回调后,要么是返回了系统繁忙,要么是无效的访问令牌...回到原帖
文档写在了产品介绍中了:https://docs.open.alipay.com/247 这个我这边会提交让调整,你测试如果还是报错,可以使用我这个授权的demo里面有我的沙箱账号,
然后再调用这个demo测试:zhimapingfen.zip
需要填写一下授权获得的token。有疑问再追问
甘甘1121 | 2017-10-12 11:16:24
我是个导演:文档写在了产品介绍中了:https://docs.open.alipay.com/247 这个我这边会提交让调整,你测试如果还是报错,可以使用我这个授权的demo里面有我的沙箱账号,
然后再调用这个demo测试:
需要填写一下授权获得的...
回到原帖
我试了,把access_token放在你的demo里面测试,一样的哇,
http://ylwines.cn/alipay/index.php
也是无效的访问令牌,
你看下access_token:authzmaBe94fa312a78e4008bac7cef78341bD05~
是不是沙箱环境不支持??
甘甘1121 | 2017-10-12 11:21:53
我是个导演:文档写在了产品介绍中了:https://docs.open.alipay.com/247 这个我这边会提交让调整,你测试如果还是报错,可以使用我这个授权的demo里面有我的沙箱账号,
然后再调用这个demo测试:
需要填写一下授权获得的...
回到原帖
还有一个奇怪的现象,我获取的access_token好像总是那几个,如:authbseB079fa5cec0324fe0bd60dcd783be7X05、authzmaBe94fa312a78e4008bac7cef78341bD05
甘甘1121 | 2017-10-12 11:26:27
甘甘1121:还有一个奇怪的现象,我获取的access_token好像总是那几个,如:authbseB079fa5cec0324fe0bd60dcd783be7X05、authzmaBe94fa312a78e4008bac7cef78341bD05回到原帖
刚才好了...成功了获取芝麻信用分了...why?你那边有做什么处理么?
甘甘1121 | 2017-10-12 11:34:33
甘甘1121:刚才好了...成功了获取芝麻信用分了...why?你那边有做什么处理么?回到原帖
刚有成功获取了几次,现在又返回繁忙或者无效了,现在token 是authbseB079fa5cec0324fe0bd60dcd783be7X05,就会返回无效...
我是个导演 | 2017-10-12 11:36:31
甘甘1121:刚才好了...成功了获取芝麻信用分了...why?你那边有做什么处理么?回到原帖
同一个用户可能授权在一个时间内是相同的,另外我这边也是按照文档进行编写的代码没有做别的出路,还有就是沙箱环境有时候不稳定导致。后续有什么问题可以再追问
李厚韡 | 2018-01-02 16:41:24
你好,我开发app支付宝登录  我用auth_code 调用 alipay.system.oauth.token接口时,总是返回Notice: Undefined property: stdClass::$sign in E:\test\apply\zhifubaodenglu\aop\AopClient.php on line 923  这段错误,可以指教一下吗?有劳
我的回复
回复数
  28
阅读数
  6866

返回顶部