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

来自    用户与第三方授权 | 
作者:王兰玉  |  更新于:2017-08-16 15:01:27     
说明:
 本帖是利用支付宝沙箱测试获取会员信息接口,demo中会配置个人的沙箱账号信息,方便大家测试。
 测试环境:JAVA1.6+,eclipse
 接口文档:【查看
 沙箱环境测试改正式环境测试请修改网关为下方值

正式环境网关:https://openapi.alipay.com/gateway.do


demo示例代码下载:用户信息授权demo.zip


测试流程(声明:demo仅做参考使用):

1.生成应用,配置密钥可参考该文档:【RSA密钥生成,支付应用创建

2.正式环境URL拼接规则:https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL


a). redirect_uri :在你创建的应用中进行查看,授权回调地址是自己配置自己所想要访问的地址,


   将授权回调地址encode方能进行使用;
      如:
           授权回调地址为:https://www.baidu.com/
           则redirect_uri内容为:https%3A%2F%2Fwww.baidu.com%2F


b).关于scope的说明可参考该贴:【如何传值scope

以下是我以沙箱为例拼接的url:
https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=2016101800718925&scope=auth_user,auth_base&redirect_uri=https%3A%2F%2Fwww.baidu.com%2F


3.将拼接好的url进行访问授权获取auth_code



注:每次用户授权完成,回调地址中的auth_code将不一样,auth_code只能使用一次,一天未被使用自动过期。


4.将auth_code放入code中,使用auth_code换取接口access_token及用户userId
package com.alipay.demo;
  
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.alipay.config.AlipayConfig;
  
/**
 * alipay.system.oauth.token(换取授权访问令牌)
 * 参考文档:https://docs.open.alipay.com/api_9/alipay.system.oauth.token
 * @author wb-wly251833
 *
 */
public class alipaySystemOauthToken {
      
    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();
        //值为authorization_code时,代表用code换取;值为refresh_token时,代表用refresh_token换取
        request.setGrantType("authorization_code");
        //授权码,用户对应用授权后得到。
        request.setCode("b5300073ee7c4dae8b00e060d161UC75");
        //刷新令牌,上次换取访问令牌时得到,即:AccessToken
        //request.setRefreshToken("43e3bee07f354cc5a7780446412bSX75");
        try {
            AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);
            //访问令牌。通过该令牌调用需要授权类接口
            System.out.println("访问令牌AccessToken:"+oauthTokenResponse.getAccessToken());
            System.out.println(oauthTokenResponse.getBody());
              
        } catch (AlipayApiException e) {
            //处理异常
            e.printStackTrace();
        }
    }
}


运行结果:
访问令牌AccessToken:composeB9de83fb7e93f4c5ea985113c774d5X75
{"alipay_system_oauth_token_response":{"access_token":"composeB9de83fb7e93f4c5ea985113c774d5X75","alipay_user_id":"2088102169462753","expires_in":600,"re_expires_in":660,"refresh_token":"composeBab117bfd2a85430d8f08906843d97X75","user_id":"2088102169462753"},"sign":"Rz9D2c0frNntC7mORRlJUHXC2p5m0gGHKVRxbsbcfH/kyma14GflU6qkSXfBw0I3pkukCMNUwJ2tU1ZnLilBescQC9W0JCwU13e8aORCesljVk70NdGzCX9Ui9avMQYaVAsqqMq5iUiZjy5u4Y8dW0Of9ldfyLeDI6PxyHZvhQK86U82B86mS81/TnitgVDyiCUlHjYtySfNruljInb3BJb8ejm/nW1tF7F2ZeAb/eKiv4YwiI72znyIA5WIqeyvSLqUA10xrOPjgWCO4rL/bWDcOSU4zqjQ8HsBvOLBfbwzA7V4Q2fM4Em17Kn8D6jIP+DzkHXKfuNAfFXsPSDrcA=="}

cope=auth_base,到这一步就可以获取到用户的userId
淡泊呼吸 | 2017-08-22 20:16:26
为什么我授权登录的时候还会调到登录页面,跳不到回调地址啊??
王兰玉 | 2017-08-23 09:13:49
淡泊呼吸:为什么我授权登录的时候还会调到登录页面,跳不到回调地址啊??回到原帖
你的意思是授权访问授权回调地址的时候,他会跳到登录页面是吗?这是正常的,肯定要先登录,然后才能进行授权,授权成功之后才会跳到授权回调地址去的
王兰玉 | 2017-08-23 09:16:49
淡泊呼吸:为什么我授权登录的时候还会调到登录页面,跳不到回调地址啊??回到原帖
如果不是我所说的那种情况,你这边详细说明一下,带上截图说明,再做确认
淡泊呼吸 | 2017-08-23 11:14:08
王兰玉:如果不是我所说的那种情况,你这边详细说明一下,带上截图说明,再做确认回到原帖
之前那个已经好了。问一下,同时要授权和获取会员信息,那回调函数不是只能写一个吗?
王兰玉 | 2017-08-29 10:15:36
淡泊呼吸:之前那个已经好了。问一下,同时要授权和获取会员信息,那回调函数不是只能写一个吗?回到原帖
你指的回调函数是?
江西抚州 | 2017-09-14 15:36:20
楼主你好,如果我想获取到用户的敏感信息,比如手机和身份证这些信息,我应该怎么获取到,如果需要特殊申请,步骤该怎么走
我是个导演 | 2017-09-15 10:02:22
江西抚州:楼主你好,如果我想获取到用户的敏感信息,比如手机和身份证这些信息,我应该怎么获取到,如果需要特殊申请,步骤该怎么走回到原帖
这个不开放这种权限,你可以https://openclub.alipay.com/read.php?tid=276&fid=25 走这个帖子第三步人工或者电话咨询,确认是否可以使用
Seeyun | 2017-12-22 10:31:04
楼主你好,用自己的沙箱拼接url测试的时候,登录授权,提示授权失败是什么原因导致的呢?谢谢
王兰玉 | 2017-12-22 10:45:00
Seeyun:楼主你好,用自己的沙箱拼接url测试的时候,登录授权,提示授权失败是什么原因导致的呢?谢谢回到原帖
麻烦提供一下你的授权链接
Seeyun | 2017-12-22 10:52:03
王兰玉:麻烦提供一下你的授权链接回到原帖
https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=2016082100305947&scope=auth_user,auth_base&redirect_uri=https%3A%2F%2Fwww.baidu.com%2F我用这个,跳到登录页面,用沙箱提供的账号登录,之前用楼主的链接登录授权成功,然后想自己试一下,点授权,页面提示授权失败。
王兰玉 | 2017-12-22 11:03:19
Seeyun:https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=2016082100305947&scope=auth_user,auth_base&redirect_...回到原帖
麻烦将你的沙箱页面:https://openhome.alipay.com/platform/appDaily.htm 截图发我看一下
Seeyun | 2017-12-22 12:20:25
王兰玉:麻烦将你的沙箱页面:https://openhome.alipay.com/platform/appDaily.htm 截图发我看一下回到原帖
公司电脑上传不了图片,我参照楼主另一个帖子【如何使用沙箱测试第三方应用授权(java版)】授权成功了,是不是此贴用户授权和第三方应用授权不太一样?沙箱用的应用不一样吗?
王兰玉 | 2017-12-22 13:14:35
Seeyun:公司电脑上传不了图片,我参照楼主另一个帖子【如何使用沙箱测试第三方应用授权(java版)】授权成功了,是不是此贴用户授权和第三方应用授权不太一样?沙箱用的应用不一样吗?回到原帖
第三方应用授权跟用户授权链接是不一样的,不能混用
木木丿航 | 2018-11-28 14:47:11
我输入密码之后直接跳转到回调地址,没有确认授权的选项
我的回复
回复数
  17
阅读数
  4410

返回顶部