User-Profile-Image
hankin
  • 5
  • 首页
  • 关于
  • 主题
  • 影视解析
  • 音乐
  • 归档
  • 留言
  • 分类
    • 后端
    • 前端
    • Python
    • PHP
    • javascript
    • GO
    • CSS
    • AI
  • 页面
    • 关于
    • 归档
    • 留言
    • 视频
      • 视频详情
    • 音乐
  • 友链
    • mango
    • 创造狮
    • 腾讯设计导航
    • coder gzh
    • 风信子博客
    • DIYgod
    • 若志奕鑫
    • 吾柯
    • 元气秋刀鱼
    • wordpress 大学
    • 守望轩-宁静雅致的小轩馆
    • 主题猫
    • 主题喵
    • kam
    • 大海看看
    • wp2
    • CrazyCodes
    • 枫瑞博客
Help?

Please contact us on our email for need any support

Support
Hankin
刷新页面会随机【个人信息流样式】
28文章    103获赞    48评论    6.5万+浏览
世界那么大,我想去看看。但钱包那么小,哪也去不了。所以,珍惜当下,享受生活。
28岁 IP: 杭州 家里蹲大学
  • 首页
  • 关于
  • 主题
  • 影视解析
  • 音乐
  • 归档
  • 留言
    首页   ›   后端   ›   PHP   ›   正文
PHP

微信公众号网页授权多域名解决方案(本地环境也可调用)

2024-06-27 16:40:47
1181  0 3

一个公众号的域名授权数量是有限的,如果一个公众号需要绑定多个域名时怎么解决呢?这时候就需要用到域名中转

本地环境也可调用微信授权登录

  • 实现微信授权域名中转实例
    • 微信授权回调域名(中转域名):www.test.com
    • 需要授权回调域名1:www.test1.com
    • 需要授权回调域名2:www.test2.com

在中转域名网站 根目录下新建 wxLogin.php中编写发起授权代码

<?php
// +----------------------------------------------------------------------
// | 作者 hankin [ http://www.hankin.cn ]
// +----------------------------------------------------------------------
// | 版权所有 2024-06-27 13:06 hankin
// +----------------------------------------------------------------------
// | 官方网站: http://www.hankin.cn
// +----------------------------------------------------------------------
?>
<?php
$gzh_app_id = "公众号appid";//公众号appid
$gzh_app_secret = "公众号appsecret";//公众号appsecret
?>
<?php if(isset($_GET['redirectUrl']) && !empty($_GET['redirectUrl'])):?>
    <!--  获取跳转url地址  -->
    <script type="text/javascript">localStorage.setItem('redirectUrl','<?= $_GET['redirectUrl'];?>')</script>
<?php endif;?>

<?php if(isset($_GET['type']) && !empty($_GET['type'])):
    //发起授权
    $redirectUrl =  $_SERVER['REQUEST_SCHEME'] . '://'.  $_SERVER['SERVER_NAME'] . '/' . $_GET['type'] . '.php';
    //获取公众号授权拿到code
    $codeUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$gzh_app_id."&redirect_uri=".urlencode($redirectUrl)."&response_type=code&scope=snsapi_userinfo&forcePopup=true&forceSnapShot=true&state=STATE#wechat_redirect";
    //header("location: ".$codeUrl);
    ?>
    <script type="text/javascript">
        //跳转code页面地址
        setTimeout(function(){
            window.location.href = '<?= $codeUrl;?>'
        },500)
    </script>
<?php endif;?>

<?php if(isset($_GET['code']) && !empty($_GET['code'])):
    //根据code获取微信用户信息
    $data = getSimpleUserInfo($_GET['code'], $gzh_app_id, $gzh_app_secret);
    ?>
    <?php
    //微信用户信息解析
    $ret['userinfo']['openid'] = $data['openid'] ?? '';//微信用户唯一标识 openid
    $ret['userinfo']['unionid'] = $data['unionid'] ?? '';//微信用户唯一标识 unionid
    $ret['userinfo']['nickname'] = $data['nickname']?? '';//微信用户昵称
    $ret['userinfo']['avatar'] = $data['headimgurl']?? '';//微信用户头像
    ?>
    <script type="text/javascript">
        //跳转回调地址
        window.location.href = localStorage.getItem('redirectUrl')+'?data=<?= urlencode(json_encode($ret));?>'
        //JSON.parse(decodeURIComponent(window.location.href.split('?data=')[1]))
    </script>
<?php endif;?>

<?php
function getSimpleUserInfo($code, $WECHAT_APPID, $WECHAT_APPSECRET)
{
    if (empty($code)) return array();
    //通过code换取网页授权access_token
    $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $WECHAT_APPID . '&secret=' . $WECHAT_APPSECRET . '&code=' . $code . '&grant_type=authorization_code';
    $access_token_json = https_request($access_token_url);
    $access_token_array = json_decode($access_token_json, true);

    $openid = isset($access_token_array['openid']) ? $access_token_array['openid'] : '';
    $access_token = isset($access_token_array['access_token']) ? $access_token_array['access_token'] : '';

    $userinfo_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN';
    $userinfo_json = https_request($userinfo_url);

    $userinfo_array = json_decode($userinfo_json, true);

    return $userinfo_array;
}

//请求接口
function https_request($url)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($curl);
    if (curl_errno($curl)) {
        return 'ERROR ' . curl_error($curl);
    }
    curl_close($curl);
    return $data;
}



/**
 * 生成AJAX结果
 * @param $resultCode
 * @param null $message
 * @param null $data
 * @return array
 */
function generateAjaxResult($resultCode, $message = NULL, $data = NULL)
{
    exit(json_encode([
        'code' => $resultCode,
        'msg' => $message,
        'result' => $data,
    ]));
}



/**
 * AJAX成功返回数据
 * @param null $data
 * @return array
 */
function ajaxSuccess($data = NULL,$message = NULL)
{
    $result = generateAjaxResult(
        200,
        $message,
        $data
    );

    return $result;
}



/**
 * AJAX错误返回数据
 * @param null $message
 * @param int $resultCode
 * @param null $data
 * @return array
 */
function ajaxError($message = NULL, $resultCode = 1000, $data = NULL)
{
    $result = generateAjaxResult(
        $resultCode,
        $message,
        $data
    );

    return $result;
}
?>
  • 根据如上方式就可以实现微信授权域名中转
  • 访问 www.test1.com 站点时只需访问 https://www.test.com/wxLogin.php?type=wxLogin&redirectUrl=当前前端页面地址
  • 访问 www.test2.com 站点时只需访问 https://www.test.com/wxLogin.php?type=wxLogin&redirectUrl=当前前端页面地址
评论 (0)

点击这里取消回复。

欢迎您 游客  

Hankin
刷新页面会随机【个人信息流样式】
28文章    103获赞    48评论    6.5万+浏览
世界那么大,我想去看看。但钱包那么小,哪也去不了。所以,珍惜当下,享受生活。
28岁 IP: 杭州 家里蹲大学
  • 首页
  • 关于
  • 主题
  • 影视解析
  • 音乐
  • 归档
  • 留言
免费开源smarty_hankin v2.0重构版

wordpress版本:6.0+

PHP版本:7.0~8.0

gitee源码仓库地址:点击打开

github源码仓库地址:点击打开

最新源码地址:待更新

加QQ群入口:1018842166

WP开源主题 smarty_hankin

随机文章
来一篇文章
2年前
Mac 下 打开微信小程序目录
1年前
php操作cookie 转换数组形式,可取某一个值
7个月前
php操作cookie字符串,替换对应值
7个月前
解决ios中input获取焦点,弹出输入法之后,input被遮挡的问题
1年前
Copyright © 2025 网站备案号: 浙ICP备20002401号-4
smarty_hankin 主题. Designed by hankin
主页
页面
  • 关于
  • 归档
  • 留言
  • 视频
    • 视频详情
  • 音乐
博主
hanhanjun888@163.com
hanhanjun888@163.com 管理员
hankin
28 文章 36 评论 65199 浏览
测试
测试