支付宝登录获取用户信息授权

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支付宝登录获取用户信息授权相关的知识,希望对你有一定的参考价值。

参考技术A

实际开发中授权码是放到服务端来生成传回APP内部的

apiname=com.alipay.account.auth&
app_id=2016921659043620254&
app_name=mc&
auth_type=AUTHACCOUNT&
biz_type=openservice&
method=alipay.open.auth.sdk.code.get&
pid=2088294695624536&
product_id=APP_FAST_LOGIN&
scope=kuaijie&
target_id=2014324xxxx&
sign=H14sOpDw5J96o7fyM9Mdr2a62fX7TtZFacYZijRW1TL9lMR2FfjaMQfSF55RvIoNamHFiejDAIDo4Igbp0FJNLlubhidElERz6%2BogPrBoO6X%2FdA5%2Fj6kQHYiZHcuD9AAgtjhQnRQA2M%3D&
sign_type=RSA

第三步:使用auth_code换取接口access_token及用户userId
接口名称:alipay.system.oauth.token
换取授权访问令牌,开发者可通过获取到的auth_code换取access_token和用户userId。auth_code作为换取access_token的票据,每次用户授权完成,回调地址中的auth_code将不一样,auth_code只能使用一次,一天未被使用自动过期。

接口请求示例
REQUEST URL: https:
//openapi.alipay.com/gateway.do

REQUEST METHOD: POST

CONTENT:

接口调用示例

请求参数说明
参数
参数名称
类型(长度范围)
参数说明
是否可为空
样例

同步响应结果示例

同步响应参数说明

异常情况说明
芝麻信用授权异常:
1)芝麻授权失败用户完成授权动作后,系统返回授权结果。因为授权可包含多个Scope,且因为芝麻信用对用户自然人主体真实性的要求,所以可能存在芝麻信用授权不成功的情况。如果芝麻信用授权不成功则会通过错误码反馈给开发者,以便做相应的的引导或处理,并记录失败原因。
2)调用芝麻产品接口时授权异常在开发者调用芝麻信用相关需要授权的产品时,可能会返回类似“用户尚未授权”的异常。导致这种情况的原因可能是:(1)授权时即返回芝麻失败;(2)授权时芝麻授权成功,但是后来用户在芝麻信用客户端(支付宝客户端-芝麻信用)取消了授权。如果是(2),则建议引导用户重新发起授权;如果是(1)且返回ALIPAY_RELATED_UNKNOWN、ALIPAY_SIMULATE_ACCOUNT、ZM_ACCOUNT_NOT_EXISTED等错误码时,则不要引导用户重新授权。
有效期说明
auth_code一次性有效;access_token有效期由支付宝根据场景和安全策略动态决定,实际的有效期请参考alipay.system.oauth.token接口返回报文的expires_in字段;refresh_token有效期由支付宝根据场景和安全策略动态决定,实际的有效期请参考alipay.system.oauth.token接口返回报文的re_expires_in字段;
刷新令牌机制
基于安全方面考虑,开放平台授权提供授权令牌刷新机制,在access_token失效后可以使用该令牌获取新的授权令牌。access_token失效后可以调用alipay.system.oauth.token接口(入参的grant_type使用refresh_token),使用refresh_token刷新access_token。刷新令牌后会返回新的access_token、refresh_token以及对应的有效期。目前刷新令牌后refresh_token会保持和请求的一致(但是开发者的业务上不应该依赖此潜规则),同时有效时间会减少(减少的时间=当前时间-首次授权获得该刷新令牌的时间)
第四步:使用access_token调用相关接口
获取token后,就可以调用接口了,不同的token可调用不同的接口,具体的接口调用场景可参考:
获取会员信息
芝麻信用评分(普惠版)
商户会员卡
关于沙箱
如何接入沙箱
沙箱是开放平台提供给开发者用户调试接口的环境,具体操作步骤见 沙箱接入指南 。
获取用户信息沙箱接入注意点
1、获取用户信息支持沙箱接入;在沙箱调通接口后,必须在线上进行测试与验收,所有返回码及业务逻辑以线上为准;
2、沙箱授权url链接拼接规则为: https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL

支付宝生活号授权获取用户信息

1.第一步在蚂蚁开放平台注册申请应用上线

2.下载支付宝秘钥生成器,生成秘钥(加在代码里面)和公钥(填写到蚂蚁开放平台)下载sdk放到extend文件夹里面

3.引用SDK

//头部加上
use thinkLoader;
header("Content-type:text/html;charset=utf-8");
Loader::import(‘alipay.AopSdk‘, EXTEND_PATH);

4.访问方法拼写授权地址

$encoded_url = 回调地址;
$appid = APPID;
$code_url = "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=$appid&scope=auth_user&redirect_uri=".urlencode($encoded_url);//获取auth_code
$this->redirect($code_url);

5.获取用户信息

$code = $_GET[‘auth_code‘];
        //APPID
        $appid = ‘2018092761533618‘;
        //应用私钥  文件名(rsa_private_key.pem)
        $rsaPrivateKey = "应用秘钥";
        //支付宝公钥  文件名 (rsa_public_key.pem)
        $alipayrsaPublicKey = "支付宝公钥";
        //初始化
        $aop = new AopClient ();
        $aop->gatewayUrl = ‘https://openapi.alipay.com/gateway.do‘;
        $aop->appId = $appid;
        $aop->rsaPrivateKey = $rsaPrivateKey;
        $aop->alipayrsaPublicKey = $alipayrsaPublicKey;
        $aop->apiVersion = ‘1.0‘;
        $aop->signType = ‘RSA2‘;
        $aop->postCharset=‘UTF-8‘;
        $aop->format=‘json‘;
        //获取access_token
        $request = new AlipaySystemOauthTokenRequest();
        $request->setGrantType("authorization_code");
        $request->setCode($code);
        $result = $aop->execute($request);
        $access_token = $result->alipay_system_oauth_token_response->access_token;
        //获取用户信息
        $request_a = new AlipayUserinfoShareRequest();
        $result_a = $aop->execute ($request_a,‘authusrB4d426f65fc0f4a1299ac3e6cc48ffX00‘);
        //这里传入获取的access_token
        $responseNode_a = str_replace(".", "_", $request_a->getApiMethodName()) . "_response";
        $user_id = $result_a->$responseNode_a->user_id;
        //用户唯一id
        $headimgurl = $result_a->$responseNode_a->avatar;
        //用户头像
        $nick_name = $result_a->$responseNode_a->nick_name;
        //用户昵称
        var_dump($user_id);
        var_dump($headimgurl);
        var_dump($nick_name);
        var_dump($result_a->$responseNode_a);
        die;

 

以上是关于支付宝登录获取用户信息授权的主要内容,如果未能解决你的问题,请参考以下文章

轻松实现支付宝服务窗网页授权从配置到获取授权获取用户信息

支付宝生活号授权获取用户信息

支付宝小程序获取用户手机号

支付宝小程序:三方场景如何获取用户手机号

支付宝快捷登录接口返回的结果没有类似腾讯和微信的openid,网站不能记录这个用户

修改支付宝账号的授权方式