微信公众号网页授权登录多域名的解决

由于微信网页开发,需要获取用户信息,所以就需要网页授权,但是在微信公众平台公众号只能设置一个回调域名,现在
只有一个公众号,但是我多个业务不同的域名,并都需要拿到用户信息,这时一个回调域名肯定是不能解决问题的,因为公众号设置的回调域名必须要与项目域名一致,不然就会报redirect_uri域名错误。

实现思路
中转域名地址(http://www.zhongzhuan.com),其他要授权的域名先去请求中转地址,并会把获取的code,state原封不动的返回到原来的地址,这样就可以用返回的code去获取access_token,从而通过access_token获取用户信息
1、我们把微信授权的回调域名设置成中转域名地址(http://www.zhongzhuan.com
2、把调起微信授权代码放到(http://www.zhongzhuan.com/index.php

<?php
const APPID="";
class Wx_auth{

    //准备scope为snsapi_userInfo网页授权页面,获取code
    public static function  authorize($params){
        $responseType=$params['response_type'];//返回类型,请填写code
        $scope=$params['scope'];//应用授权作用域
        $state=$params['state'];//重定向后会带上state参数 自定义
        $redirect_url='http://www.zhongzhuan.com/index.php';//这里的域名就是公众号设置的域名
        $redirect_url = urlencode($redirect_url);
        $get_userInfo_url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.APPID.'&redirect_uri='.$redirect_url .'&response_type='.$responseType.'&scope='.$scope.'&state='.$state.'#wechat_redirect';
        header('Location:'.$get_userInfo_url);die;
    }

    //把回调结果返回最开始的授权业务
    public static function redirect($code,$state){
        $redirect_uri=$_COOKIE['redirect_uri'];
        header('Location:'.$redirect_uri.'?code='.$code."&state=".$state);die;
    }

}

if(!isset($_GET['code'])){
    //最开始授权回调地址
    if(isset($params['redirect_uri'])){
        setcookie('redirect_uri',urldecode($params['redirect_uri']));
    }
    Wx_auth::authorize($_GET);
}else{
    Wx_auth::redirect($_GET['code'],$_GET['state']);
}

3、另外要授权的域名项目(http://www.a.com),这是我们先去跳转到中转地址,由中转地址调起授权页面,用户点击授权登录,获取codestate原封不动的返回到(http://www.a.com/index.php),然后拿到code去获取用户信息

$appid='';
$appsecret='';
//1.准备scope为snsapi_userInfo网页授权页面
$redirect_url='http://www.a.com/index.php';
$redirecturl = urlencode($redirect_url);
//参数
$params=[
    'redirect_uri'=>$redirecturl,
    'response_type'=>'code',
    'scope'=>"snsapi_userinfo",
    'state'=>"fff"
];
$param_str=urldecode(http_build_query($params));;
//中转地址,获取code
$get_code_url = 'http://www.zhongzhuan.com?'.$param_str.'#wechat_redirect';
//2.用户手动同意授权,同意之后,获取code
$code = $_GET['code'];
if( !isset($code) ){
    header('Location:'.$get_code_url);die;
}
//3.通过code换取网页授权access_token
$get_access_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';
$result = json_decode(file_get_contents($get_access_token_url));
//4.通过access_token和openid拉取用户信息
$get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$result->access_token.'&openid='.$result->openid.'&lang=zh_CN ';
$userInfo = file_get_contents($get_user_info_url);
$userInfo = json_decode($userInfo ,true);
print_r($userInfo);

亲测有效!真正的解决了授权域名回调只能填写一个的问题!

实现思路来源:https://www.cnblogs.com/lyzg/p/6159617.html

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
微信公众号网页授权登录是指在微信公众号中,用户点击菜单或链接后,通过授权登录获取用户信息的过程。根据微信公众号官方文档,在开发微信公众号网页时,需要仔细观看文档中关于网页授权回调域名的说明、网页授权的两种scope的区别说明以及关于网页授权access_token和普通access_token的区别等内容。 微信公众号网页授权登录主要分为以下几个步骤: 1. 用户点击菜单或链接后,进入微信公众号网页授权登录页面。 2. 用户在该页面中进行授权操作,微信公众号会跳转到授权回调域名中的指定页面,并携带授权的code参数。 3. 开发者可以根据获取的code参数,调用微信接口获取用户的access_token和openid等信息。 4. 开发者可以使用获取的用户信息进行业务逻辑的操作,例如展示个人中心、发送消息等。 需要注意的是,在开发过程中,需要配置微信公众号后台的路径和授权回调域名等信息,以确保页面的正确展示和接口的正常调用。 与小程序相比,微信公众号更加侧重于营销,而小程序则更像是一个微型的APP程序,用于和用户进行交互。 总结起来,微信公众号网页授权登录是通过微信公众号中的授权机制,获取用户信息并进行业务操作的过程。开发者需要仔细阅读微信公众号官方文档,了解网页授权的相关操作和配置要求,以确保功能的正常运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [微信公众号网页授权登录](https://blog.csdn.net/qq_41971087/article/details/82593830)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [uni-app微信公众号(1)——网页授权登录](https://blog.csdn.net/qq_40601005/article/details/121028141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值