微信微擎的网页oauth的授权如何实现多个域名的转换 - 周末食荟 - CSDN博客

通宵搞了两个晚,终于把这个问题解决了!

需求是这样的 现在有3个不同的域名,一个认证的微信公众号,由于公众号授权回调页面域名只能写一个,因此对于我有多个微擎系统分别部署在不同服务器上(一台做营销业务、一台做分销系统、一台做餐饮系统),分别部署!网上有很多这样的思路我找到了三种,但是方法多是一样的。

1. 假设将网页授权回调域名设置为`www.test.com`;另外的域名为`www.test1.com`,`www.test2.com`!

2. 正确的回调是这(php)
$redirect_uri='www.test.com';
$url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
header("Location:".$url);

3、那么第二个域名怎么办呢,如果简单的更换上面的$redirect_uri,那么微信服务器就会报返地址错误。其实道理很简单,因为微信没有授权这个网址了。那么是不是可以借www.test.com来验证。当然是可以的,只要做一个中转的服务器就可以了。

4、网上我找了好久,只有一种中转的方法,但是微擎提供的是另一种思路。下面我把两种方法多写给大家,希望对大家有帮助。

方法一、是改变https://open.weixin.qq.com/connect/oauth2/authorize这个认证地址为自己代理服务器的地址,这个方法网上很多,我测试了一下基本上多可以用。

方法二、是微擎用的改$redirect_uri='www.test.com',这样是可以拿到code,设置方法也很简单,就是设置微擎的独立oauth域名。那么问题来了,设完过后,我没有找到微擎的文档说,怎么回到www.test1.com上去。因为是test和test2要用code 。其实比较简单,这要test中转服务 器header给他们两个就可以了!具体的方法和代码,先在test的服务器上建一个app目录里面再写一个index.php

<?php
$back_url = urldecode("http://www.test1.com/app/index.php");
        header('Location: ' . implode('', [
                $back_url,
                strpos($back_url, '?') ? '&' : '?',
          'i='.$_GET['i'],
          '&c='.$_GET['c'],
          '&a='.$_GET['a'],
                '&code=' .$_GET['code'],
                '&state=' .$_GET['state'],
            ]));


Original url: Access
Created at: 2018-12-26 13:17:49
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论