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

news/2025/2/12 19:04:18/

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.ppmy.cn/news/1007839.html

相关文章

DSP定点数的计算规则和示例

目录 1. Q/S表示法的数值范围 2. 定点化加减法计算规则 2.1 防溢出处理 3. 定点化乘法计算规则 3.1 推算 4. 定点化除法计算规则 4.1 推算 5. 程序代码中如何确定Q值 6. 浮点转定点计算示例 1. Q/S表示法的数值范围 Q表示法 S表示法 数的范围 Q15 S0.15 -1≤X≤0…

分治法、回溯法与动态规划

算法思想比较 回溯法&#xff1a;有“通用解题法”之称&#xff0c;用它可以系统地搜索问题的所有解。回溯法是按照深度优先搜索(DFS)的策略&#xff0c;从根结点出发深度探索解空间树分治法&#xff1a;将一个难以直接解决的大问题&#xff0c;分割成一些规模较小的相同问题&…

SpringBoot实现数据库读写分离

SpringBoot实现数据库读写分离 参考博客https://blog.csdn.net/qq_31708899/article/details/121577253 实现原理&#xff1a;翻看AbstractRoutingDataSource源码我们可以看到其中的targetDataSource可以维护一组目标数据源(采用map数据结构)&#xff0c;并且做了路由key与目标…

数据结构-二叉树

数据结构-二叉树 二叉树的概念二叉树的遍历分类 建立二叉树&#xff0c;并遍历二叉树的最小单元二叉树的最小单元初始化初始化二叉树前序遍历的实现中序遍历的实现后序遍历的实现计算节点的个数计算树的深度求第k层的个数查找二叉树的元素分层遍历 全部代码如下 二叉树的概念 二…

rancher证书过期,更新操作

看着比其他的都靠谱&#xff0c;我这里转载一下&#xff0c;以变下次找不到了 http://t.csdn.cn/p1QLU

SpringBoot中Redis报错:NOAUTH Authentication required

1、问题 org.springframework.dao.InvalidDataAccessApiUsageException: NOAUTH Authentication required.; nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required. … 2、解决 如果提供了密码还没解决&#xff0c;那可能是…

前端需要注意哪些 SEO

前端需要注意哪些 SEO 语义化 多使用语义化标签&#xff0c;让正确的标签对应正确的内容。 重要内容前置 可以利用弹性盒布局中的 order 属性&#xff0c;将核心、重要的内容尽量放到文档的前面。 服务端渲染 由于目前的搜索引擎对客户端渲染并不友好&#xff0c;因此使用服务…

涨姿势了,有意思的气泡 Loading 效果

今日&#xff0c;群友提问&#xff0c;如何实现这么一个 Loading 效果&#xff1a; 这个确实有点意思&#xff0c;但是这是 CSS 能够完成的&#xff1f; 没错&#xff0c;这个效果中的核心气泡效果&#xff0c;其实借助 CSS 中的滤镜&#xff0c;能够比较轻松的实现&#xff0…