第5章 通过微信网页授权间接获取微信中的code值

1 准备基于外网的有效回调页面

    由于当前最新版的微信不再显示带有code值的错误页面,所以开发者必须先自己构建1个用于获取code值外网的有效回调页面,微信浏览器才能通过该有效回调页面获取code值。

上面的页面在最新版的微信不再显示。

1.1 构建基于外网的有效回调页面。

    注意:回调页面必须基于外网,本人是通过花生壳中的内网穿透来实现见:“第4章 .NetCore程序通过花生壳实现内网穿透_zhoujian_911的博客-CSDN博客

1.2 新建WeChatGetCode项目用于获取code

1.2.1 WeChatGetCode.Controllers.HomeController

using Microsoft.AspNetCore.Mvc;

namespace WeChatGetCode.Controllers

{

    public class HomeController : Controller

    {

        private readonly IHttpContextAccessor _httpContextAccessor;

        public HomeController(IHttpContextAccessor httpContextAccessor)

        {

            _httpContextAccessor = httpContextAccessor;

        }

        public IActionResult Index()

        {

            return View();

        }

        public IActionResult Privacy()

        {

            string _code = _httpContextAccessor.HttpContext.Request.QueryString.Value;

            if(string.IsNullOrEmpty(_code))

                return Content("Privacy页面没有从微信中获取code值");

            return Content("Privacy页面从微信中获取code值:" + _code);

        }

        public IActionResult PrivacyCode(string code)

        {

            if (string.IsNullOrEmpty(code))

                return Content("PrivacyCode页面没有从微信中获取code值");

            return Content("PrivacyCode页面从微信中获取code值:" + code);

        }

    }

}

1.2.2 WeChatWebApi\Program.cs

builder.Services.AddControllersWithViews();

builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

var app = builder.Build();

1.2.3 注意:

    1、必须把WeChatGetCode项目发布到IIS或其它

    2、如果你的IIS或其它是云服务或有公用IP则直接可用

    3、如果你的IIS或其它是内网可使用花生壳做内网穿透,网上也有一些不需要任何费用的命令文件也可以做内内网穿透但配置下来更为复杂和麻烦。

    其运行效果如下图所示:

2 微信公众账号测试号的配置

1、打开网址:微信公众平台 (qq.com)


    2、使用微信扫码登录

    3、下拉测试号管理页面到

    4修改回调页面的外网域名:

3 新建WeChatWebApi项目

3.1 WeChatGetCode.Controllers.HomeController

using Microsoft.AspNetCore.Mvc;

using System.Web;

namespace WeChatWebApi.Controllers

{

    [ApiController]

    [Route("[controller]/[action]")]

    public class WebChatController : ControllerBase

    {

        private string AppId = "wxc7337c066242de8b";

        private string AppSecret = "85901b3e6cbec634298c1707afcf915e";

        [HttpGet]

        public string GetUrlToPrivacy()

        {

            var RedirectUri1 = "https://7cn7680860.imdo.co/Home/Privacy";

            var Scope = "snsapi_base";

            var State = "123";

            var url = $"https://open.weixin.qq.com/connect/oauth2/authorize?appid={AppId}&redirect_uri={HttpUtility.UrlEncode(RedirectUri1)}&response_type=code&scope={Scope}&state={State}#wechat_redirect";

            return url;

        }

        [HttpGet]

        public string GetUrlToPrivacyCode()

        {

            var RedirectUri1 = "https://7cn7680860.imdo.co/Home/PrivacyCode";

            var Scope = "snsapi_base";

            var State = "123";

            var url = $"https://open.weixin.qq.com/connect/oauth2/authorize?appid={AppId}&redirect_uri={HttpUtility.UrlEncode(RedirectUri1)}&response_type=code&scope={Scope}&state={State}#wechat_redirect";

            return url;

        }

    }

}

 

 

 

对以上功能更为具体实现和注释见:230805_004WeChatGetCode(微信code值回调页面)、230805_005WeChatWebApi(微信code回调URL拼接组合)。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx使用proxy_cache指令设置反向代理缓存静态资源

场景 CentOS7中解压tar包的方式安装Nginx&#xff1a; CentOS7中解压tar包的方式安装Nginx_centos7 tar文件 怎么load_霸道流氓气质的博客-CSDN博客 参考上面流程实现搭建Nginx的基础上&#xff0c;实现静态资源的缓存设置。 注意上面安装时的目录是在/opt/nginx目录下&…

lifecycleScope Unresolved reference

描述 导入了lifecycle.lifecycleScope&#xff0c;但是在activity中使用lifecycleScope报错出现Unresolved reference找不到引用。 导包 import androidx.lifecycle.lifecycleScope使用 lifecycleScope.launch(Dispatchers.IO) {...}错误 方案 代码中的activity继承Activ…

Cesium引入vite + vue3

下载Cesium yarn add cesium下载cesium-vite 插件 yarn add vite-plugin-cesium使用 vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue import WindiCSS from vite-plugin-windicss import cesium from vite-plugin-cesium; //引入插件…

【绪论0】

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.0 引言No.1 操作系统的概念功能和定义一、操作系统的概念和定义1、电脑的演变 二、操作系统的功能和目标 No.2 操作系统的特征一、并发二、共享三、虚拟四、异步 No.3 操作系统的发展与分类一、手工操作阶段二、批处理阶段…

前端构建(打包)工具发展史

大多同学的前端学习路线&#xff1a;三件套框架慢慢延伸到其他&#xff0c;在这个过程中&#xff0c;有一个词出现的频率很高&#xff1a;webpack 。 作为一个很出名的前端构建工具我们在网上随便一搜&#xff0c;就会有各种教程&#xff1a;loader plugin entry吧啦吧啦。 但…

【福建事业单位-推理判断】04定义判断、事件排序

一、定义判断 1.1、关键词——主客体 千万不要过度脑补 需要注意限定语&#xff0c;被限定的主体和客体。 找到主谓宾&#xff0c;和限定与 社会救助每次出题&#xff0c;都会有一个不涉及生存保障的易错选项。 1.2句式引导词 通过引导词&#xff0c;找到定义中的关键内容…

同为科技(TOWE)带热插拔功能机柜PDU插座的应用

所谓热插拔&#xff08;hot-plugging或Hot Swap&#xff09;&#xff0c;即带电插拔&#xff0c;指的是在不关闭系统电源的情况下&#xff0c;将模块、板卡插入或拔出系统而不影响系统的正常工作&#xff0c;从而提高了系统的可靠性、快速维修性、冗余性和对灾难的及时恢复能力…

docker compose一键部署lnmt环境

创建docker compose 目录 [rootlocalhost ~]# mkdir -p /compose_lnmt 编写nginx的dockerfile文件 创建目录 [rootlocalhost compose_lnmt]# mkdir -p nginx 编写nginx配置文件 [rootlocalhost nginx]# vim nginx.conf user root; #运行身份#nginx自动设置进程…

【深度学习_TensorFlow】梯度下降

写在前面 一直不太理解梯度下降算法是什么意思&#xff0c;今天我们就解开它神秘的面纱 写在中间 线性回归方程 如果要求出一条直线&#xff0c;我们只需知道直线上的两个不重合的点&#xff0c;就可以通过解方程组来求出直线 但是&#xff0c;如果我们选取的这两个点不在直…

一百四十三、Linux——Linux的CentOS 7系统语言由中文改成英文

一、目的 之前安装CentOS 7系统的时候把语言设置成中文&#xff0c;结果Linux文件夹命名出现中文乱码的问题&#xff0c;于是决定把Linux系统语言由中文改成英文 二、实施步骤 &#xff08;一&#xff09;到etc目录下&#xff0c;找到配置文件locale.conf # cd /etc/ # ls…

38.利用matlab解 有约束无约束的参数估计对比(matlab程序)

1.简述 1.离散型随机变量的极大似然估计法: (1) 似然函数 若X为离散型, 似然函数为 (2) 求似然函数L(θ)的最大值点 θ, 则θ就是未知参数的极大似然估计值. 2.连续型随机变量的极大似然估计法: (1) 似然函数 若 X 为连续型, 似然函数为 (2) 求似然函数L(θ)的最大值点θ, 则…

基于ASP.NET MVC开发的、开源的个人博客系统

推荐一个功能丰富、易于使用和扩展的开源博客&#xff0c;可以轻松地创建和管理自己的博客。 项目简介 基于.Net Framework 4.5开发的、开源博客系统&#xff0c;具有丰富的功能&#xff0c;包括文章发布、分类、标签、评论、订阅、统计等功能&#xff0c;同时也可以根据需要…