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

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

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

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

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

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

相关文章

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32