支付宝移动端H5授权实现自动登录

当用户通过支付宝打开H5页面时,避免重复登录,实现授权登录的功能

授权开发文档页面https://docs.open.alipay.com/289/105656
授权流程

支付宝移动端H5授权实现自动登录_第1张图片
在支付宝开放平台【功能信息】中点击【添加功能】,选择【获取会员信息】

然后确认支付宝的APPID,设置回调网关.

第一步:URL拼接

商户/开发者通过以下的 URL 拼接规则拼接用户授权的 URL 地址,该地址展示给用户,用户需在支付宝端点开 URL 地址,并点击授权,商户/开发者即可获得用户的授权。
url拼接规则:https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=auth_user&redirect_uri=ENCODED_URL&state=自定义参数
APPID:对应自己的appid,
redirect_uri:在支付宝设置的回调网关;(只要域名一致都可以回调),值得注意的是回调地址需要encode

String realPath = req.getRequestURI() + queryString;
  String url = "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id="
     + "自己的appid&scope=auth_user"
       + "&redirect_uri="
   + URLEncoder.encode("https://" + custom_wechat_domain +"/customer/alipay/getAuthCode.action", "utf-8")
      + "&state="+realPath;
    resp.sendRedirect(url);

realPath:目标页面,也就是授权完成之后需要跳转的页面,

此处代码,是在过滤器中,如果用户的session信息为空或者userid为空,则会重定向到授权页面.

第二步:准备接收支付宝的回调

回调接口回调接口,接收auth_code和自定义参数state

然后通过auth_code,请求得到用户的userid,
支付宝移动端H5授权实现自动登录_第2张图片得到用户的userid后存入session中,从数据库中查询是否存在该用户,如果查询结果中存在用户信息,则将用户信息存在session中,然后将目标页面重定向.
支付宝移动端H5授权实现自动登录_第3张图片
被重定向的目标页面再次经过过滤器,如果session中存在userid但是不存在用户信息,则跳转登录页面,
本次授权没有处理用户未点击授权的情况

你可能感兴趣的:(支付宝,支付宝,java,授权)