微信公众号网页授权中转功能-解决网页授权域名个数限制-通过已授权的域名进行中转...

本文主要是介绍微信公众号网页授权中转功能-解决网页授权域名个数限制-通过已授权的域名进行中转...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微信公众号网页授权中转功能

解决网页授权域名个数限制

通过已授权的域名进行中转

thinkphp8代码

route下

// 微信公众号授权中转
Route::get('connect/oauth2/authorize', 'WechatOfficial/GetConnectOauth2Authorize');
// 通过code换取网页授权access_token
Route::get('sns/oauth2/access_token', 'WechatOfficial/GetSnsOauth2AccessToken');
// 拉取用户信息(需scope为 snsapi_userinfo)
Route::get('sns/userinfo', 'WechatOfficial/GetSnsUserinfo');

控制器下

<?phpnamespace app\controller;use app\BaseController;
use think\facade\Request;
use think\facade\Http;class WechatOfficial extends BaseController
{public function GetConnectOauth2Authorize(){// 获取查询参数$appid = Request::param('appid','');$scope = Request::param('scope',"");$redirect_uri = Request::param('redirect_uri',"");$code = Request::param('code',"");// 判断是否有code返回if (!empty($code)) {// 判断redirect_uri是否包含查询参数if (strpos($redirect_uri, '?') !== false) {return redirect($redirect_uri. '&code=' . $code);} else {return redirect($redirect_uri. '?code=' . $code);}return;}// 构建中间重定向URL$middleRedirect = urlencode(Request::url(true) . '/connect/oauth2/authorize?redirect_uri=' . urlencode($redirect_uri));// 构建微信授权URL$wechatUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$middleRedirect}&response_type=code&scope={$scope}&connect_redirect=1#wechat_redirect";// 重定向到微信授权页面return redirect($wechatUrl);}public function GetSnsOauth2AccessToken(){$appid = Request::param('appid','');$secret = Request::param('secret',"");$code = Request::param('code',"");$client = new \GuzzleHttp\Client();$response = $client->request('GET', "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$secret}&code={$code}&grant_type=authorization_code", ['verify' => false]);$respBody=$response->getBody();return json(json_decode((string)$respBody,true));}public function GetSnsUserinfo(){$access_token = Request::param('access_token','');$openid = Request::param('openid',"");$client = new \GuzzleHttp\Client();$response = $client->request('GET', "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}&lang=zh_CN", ['verify' => false]);$respBody=$response->getBody();return json(json_decode((string)$respBody,true));}
}

使用上,将原来调用官方域名 

open.weixin.qq.com
修改为自己的中转域名,这样可以解决个数限制问题

这篇关于微信公众号网页授权中转功能-解决网页授权域名个数限制-通过已授权的域名进行中转...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1114493

相关文章

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

基于SpringBoot实现文件秒传功能

《基于SpringBoot实现文件秒传功能》在开发Web应用时,文件上传是一个常见需求,然而,当用户需要上传大文件或相同文件多次时,会造成带宽浪费和服务器存储冗余,此时可以使用文件秒传技术通过识别重复... 目录前言文件秒传原理代码实现1. 创建项目基础结构2. 创建上传存储代码3. 创建Result类4.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp