美文网首页
【微信】授权回调页面域名

【微信】授权回调页面域名

作者: 嘻洋洋 | 来源:发表于2018-08-10 18:11 被阅读0次

    授权回调页面域名是用来做什么的

    • 概念:
      用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面回调页面需 在此域名下,以确保安全可靠。回调页面域名不支持IP地址,网页授权域名目前允许设置2个。
      网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.htmlhttp://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.comhttp://music.qq.comhttp://qq.com无法进行OAuth2.0鉴权
    • 用途
      在做项目集成微信登录以及微信支付的时候,都需要进行用户授权,通过授权可以获取openid(公众号支付必须的)和用户信息等。
    • 获取用户信息的流程
      1: 用户同意授权,获取code。
      首先:先生成Oauth2.0授权链接并跳转
    https://open.weixin.qq.com/connect/qrconnect?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2F&response_type=code&scope=snsapi_login&state=584bc87e11ff37492#wechat_redirect](https://open.weixin.qq.com/connect/qrconnect?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2F&response_type=code&scope=snsapi_login&state=584bc87e11ff37492#wechat_redirect)
    
    

    其次:微信会立即发送code值和state(你自己设定的字段)到你的redirect_uri中,如:http://test.com/test/pay?code=CODE&state=STATE
    2: 拉取用户信息

        String OAUTH_TOKEN = "https://api.weixin.qq.com/sns/oauth2/access_token";
    

    多业务场景的问题【微信多域名回调】

    微信的网页授权回调域名只能设置一个,但是多个业务使用同一个微信公众号授权信息的话,就需要使用者内部进行处理了。我在应用设计之初就会对应用做业务拆分,然后不同的业务采用不同的二级域名来部署。如果每个业务集成微信登录和微信支付,那么就会存在问题。因为根据授权回调页面域名的原则,它只能用一个域名,并且只有回调地址的域名与该设置完全相同,才能成功发起微信授权。

    • 解决思路
      当其它业务需要发起微信授权时,将授权请求先发到设置回调页面域名的业务系统【A】中,然后A会把这个请求转发到微信;
      当用户同意授权后,A会收到微信的授权回调,并把回调结果(code、state参数)原封不动地再返回给最开始发起授权的业务。
    • 步骤
      1:内部接口接受到获取请求,跳转微信授权链接
      2:用户同意授权,获取code
      3:拉取用户信息
      4:返回信息给调用服务者(以get传参的方式进行重定向指定地址即可)

    相关文章

      网友评论

          本文标题:【微信】授权回调页面域名

          本文链接:https://www.haomeiwen.com/subject/nbllbftx.html