支付宝第三方应用,用户登录授权获取信息

支付宝第三方应用,用户登录授权获取信息_第1张图片

这是对应的关系 ,很重要

  1. 应用授权

    1. 方案一 商户先通过服务商发起授权的二维码进行授权,这时后台商家授权应用的列表里就有对应的商户
    2. 方案二 这里也可以用过官网文档的接口进行第三方应用授权保存对应信息
  2. 拼接URL进行用户信息登录授权

/oauth2/publicAppAuthorize.htm?app_id='.$aliconfig['sub_app_id'].'&g='.$g.'&scope=auth_user&redirect_uri='.urlencode($aliconfig['auth_notify_url'])

注意:
sub_app_id是对应授权商家下自用型的APPID
g 是我标识了授权哪个商家,为了授权回调之后拿到对应的app_auth_token

  1. 授权回调时.先通过system.oauth.token获取access_token
        $c = new \AopClient;
        $c->appId = $aliconfig['app_id'];
        $c->rsaPrivateKey = trim($aliconfig['merchant_private_key']);
        $c->format = "json";
        $c->charset = "GBK";
        $c->gatewayUrl= $aliconfig['gatewayUrl'];
        $c->signType= "RSA2";
        $c->alipayrsaPublicKey = trim($aliconfig['alipay_public_key']);
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.user.userinfo.share
        

        $tokenRequest = new \AlipaySystemOauthTokenRequest();
        $tokenRequest->setGrantType('authorization_code');
        $tokenRequest->setCode($auth_code);
        //授权类接口执行API调用时需要带上accessToken
        $response = $c->execute($tokenRequest,null,$aliconfig['app_auth_token']);

注意:
app_id 是第三方应用的APPID(服务商APPID)
私钥和秘钥也都是第三方应用对应的配置
这里会带上app_auth_token 参数 (文档有写)

  1. 通过alipay.user.userinfo.share获取对应用户信息(头像,昵称等)
 $request = new \AlipayUserInfoShareRequest();
 $infoRequest = $c->execute ($request,$access_token,$aliconfig['app_auth_token']); //这里传入获取的access_token 

这里也需要带上app_auth_token 参数 (文档有写)

  1. 完成 ,第三方调用,获取用户的信息时,在拼接授权链接时,链接的appid以及授权回调地址需要传入商家的,而不是服务商的。 在获取access_token时,传入的是服务商的appid等信息,以及商家授权获取的app_auth_token

你可能感兴趣的:(支付宝,项目问题)