.NET6使用微信小程序授权登录,获取手机号
1.在appsettings配置你的小程序配置信息
//微信小程序信息配置"WechatConfig": {"appid": "", //小程序ID"secret": "" //小程序秘钥},
2.请求接口时先获取Access_token
#region 获取小程序的Access_tokenpublic object GetAccess_token(string appid, string secret){string strUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret;HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(strUrl);req.Method = "GET";req.ContentType = "textml;charset=UTF-8";HttpWebResponse response = (HttpWebResponse)req.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);string jsonData = myStreamReader.ReadToEnd();myStreamReader.Close();myResponseStream.Close();string jsonSr = jsonData;JObject jsons = JObject.Parse(jsonSr);string accesstoken = jsons["access_token"].ToString();return accesstoken;}#endregion
3.授权时获取手机号
#region 获取微信绑定手机号public object GetPhoneNumber(string code, string appid, string secret){string errCode = "";try{var accesstoken = GetAccess_token(appid, secret);string serviceAddress = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + accesstoken;JObject codes = new JObject();codes["code"] = code;string sendData = JsonConvert.SerializeObject(codes);//换成Post请求方式string jsonString = UrlPost(sendData, serviceAddress);dynamic model = JToken.Parse(jsonString) as dynamic;JObject json = JObject.Parse(jsonString);errCode = json["errcode"].ToString();string purePhoneNumber = json["phone_info"]["phoneNumber"].ToString();//签发token//string token;//_authenservice.IsAuthenticated(code, out token);return new { Code = 200, Msg = "获取成功", Tel = purePhoneNumber, Token = token };}catch (Exception e){return new { Code = 0, Msg = "获取失败" + e.Message };}}#endregion
4.微信接口要求必须使用Post请求方法
#region 提交Post请求/// <summary>/// 提交Post请求/// </summary>/// <param name="parameterData">参数集合</param>/// <param name="serviceUrl">URL</param>/// <param name="ContentType"></param>/// <param name="Accept"></param>/// <returns></returns>public static string UrlPost(string parameterData, string serviceUrl, string ContentType = "application/json", string Accept = "application/json"){//先根据用户请求的uri构造请求地址//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);//创建Web访问对象HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);//把用户传过来的数据转成“UTF-8”的字节流byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData);myRequest.Method = "POST";//myRequest.Accept = "application/json";//myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded myRequest.AutomaticDecompression = DecompressionMethods.GZip;myRequest.Accept = Accept;//myRequest.ContentType = ContentType;myRequest.ContentType = "application/json; charset=UTF-8";myRequest.ContentLength = buf.Length;myRequest.MaximumAutomaticRedirections = 1;myRequest.AllowAutoRedirect = true;//myRequest.Headers.Add("content-type", "application/json");//myRequest.Headers.Add("accept-encoding", "gzip");//myRequest.Headers.Add("accept-charset", "utf-8");//发送请求Stream stream = myRequest.GetRequestStream();stream.Write(buf, 0, buf.Length);stream.Close();//通过Web访问对象获取响应内容HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法string returnData = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾reader.Close();myResponse.Close();return returnData;}#endregion
//小程序官方文档
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html
相关文章:
.NET6使用微信小程序授权登录,获取手机号
1.在appsettings配置你的小程序配置信息 //微信小程序信息配置"WechatConfig": {"appid": "", //小程序ID"secret": "" //小程序秘钥},2.请求接口时先获取Access_token #region 获取小程序的Access_tokenpublic object GetA…...
游戏类APP如何提升用户的活跃度?
移动游戏行业,追求使用率的营销能发挥强大的功效,可帮助减少玩家流失、追回流失的玩家、提高活跃玩家所带来的价值以及增加付费玩家贡献的收入。 一、了解玩家需求 想要提升玩家的活跃,首先要知道,玩家喜欢玩哪些平台的游戏&…...
【Sklearn】基于支持向量机算法的数据分类预测(Excel可直接替换数据)
【Sklearn】基于支持向量机算法的数据分类预测(Excel可直接替换数据) 1.模型原理1.1 数学模型1.2 模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果1.模型原理 支持向量机(Support Vector Machine,SVM)是一种用于分类和回归的监督学习算法,其基本…...
抽象类与接口
一,类 定义类 部分与ES6用法基本一致。通过class定义类名,并通过constructor定义构造函数,通过super关键字来调用父类的方法。 class Person {name: string; // 属性constructor(name: string) { // 构造函数this.name name;}eat()…...
第三章,矩阵,09-线性方程组解的判断与求法、矩阵方程
第三章,矩阵,09-线性方程组解的判断与求法、矩阵方程 定理推论1推论2推论3推论4 矩阵方程AXB解法解的存在性推论 玩转线性代数(21)线性方程组解的判断与求法的笔记,相关证明以及例子见原文 定理 对n元线性方程组 A x b Axb Axb,…...
Vue-4.编译器VsCode
准备 Vue-1.零基础学习Vue Vue-2.nodejs的介绍和安装 Vue-3.vue简介 为什么用VsCode VsCode 是Vue官网首推的编译器它是完全免费的 下载安装VsCode 下载地址 安装的时候不停地下一步直到完成即可 安装插件 安装汉化插件 要将 Visual Studio Code(VSCode&am…...
Neo4j之Aggregation基础
在 Neo4j 中,聚合(Aggregation)是对数据进行计算、汇总和统计的过程。以下是一些使用聚合函数的常见例子,以及它们的解释: 计算节点数量: MATCH (p:Person) RETURN count(p) AS totalPersons;这个查询会计…...
Python 函数
Built-in Functions — Python 3.11.4 documentation...
Spring(三):Spring中Bean的生命周期和作用域
前言 在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean。简单地讲,bean 就是由 IOC 容器初始化、装配及管理的对象,除此之外,bean 就与应用程序中的其他对象没有什么区别了。而 b…...
【AutoLayout案例03-设置底部按钮之间相同间距 Objective-C语言】
一、好,咱们继续啊 1.咱们继续把autoLayout介绍一下 咱们的自动布局 给大家介绍一下 那么,自动布局呢 继续咱们给大家做的案例 做几个例子 把这几个例子做完以后 我们再给它 我们再给大家说一下,如何通过代码,来实现自动布局 虽然说,通过代码来实现自动布局,并不推荐 但…...
代码随想录算法训练营20期|第七天|哈希表part02|454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结
454.四数相加II 比较巧思的解法,先把nums1 和nums2的数两两相加,并存储sum和次数 再在nums3和nums4里找对应和sum和为0的数值i,j Time: N^2 Space:N^2, 最坏情况下A和B的值各不相同,相加产生的数字个数为 n^2 class Solution {public int fo…...
NavMeshPlus 2D寻路插件
插件地址:h8man/NavMeshPlus: Unity NavMesh 2D Pathfinding (github.com) 我对Unity官方是深恶痛觉,一个2D寻路至今都没想解决,这破引擎早点倒闭算了. 这插件是githun的开源项目,我本身是有写jps寻路的,但是无法解决多个单位互相阻挡的问题(可以解决但是有性能问…...
【03】基础知识:typescript中的函数
一、typescript 中定义函数的方法 函数声明法 function test1(): string {return 返回类型为string }function test2(): void {console.log(没有返回值的方法) }函数表达式/匿名函数 const test3 function(): number {return 1 }二、typescript 中 函数参数写法 1、typesc…...
ssm社区文化宣传网站源码和论文
ssm社区文化宣传网站源码和论文019 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 研究或设计的目的和意义: (一)研究目的: 通过本次课题能够将所学的Java编程知识以及Mysql数据库知…...
Go语言工程实践之测试与Gin项目实践
Go 语言并发编程 及 进阶与依赖管理_软工菜鸡的博客-CSDN博客 03 测试 回归测试一般是QA(质量保证)同学手动通过终端回归一些固定的主流程场景 集成测试是对系统功能维度做测试验证,通过服务暴露的某个接口,进行自动化测试 而单元测试开发阶段,开发者对单独的函数…...
排查docker无法启动问题
查看Linux系统操作日志(最后200行就可以排查): tail -200f /var/log/messages...
[C++ 网络协议] 套接字和地址族、数据序列
目录 1. 套接字 1.1 在Linux平台下构建套接字 1.1.1 用于接听的套接字(服务器端套接字) 1.1.2 用于发送请求的套接字(客户端套接字) 1.2 在Windows平台下构建套接字 1.2.1 Winsock的初始化 1.2.2 用于接听的套接字(服务器端套接字) 1.2.3 用于发送请求的套接字(客户端套…...
AI 绘画Stable Diffusion 研究(八)sd采样方法详解
大家好,我是风雨无阻。 本文适合人群: 希望了解stable Diffusion WebUI中提供的Sampler究竟有什么不同,想知道如何选用合适采样器以进一步提高出图质量的朋友。 想要进一步了解AI绘图基本原理的朋友。 对stable diffusion AI绘图感兴趣的朋…...
线程池满了如何处理
某天搬砖时遇到一个问题,我创建了一个线程池执行任务,刚开始的时候还是一切,结果第二天发现有些任务没有正常执行。一看日志才发现是高峰期时线程池给我占用慢了,任务被丢掉了。 举个例子,我创建了一个线程池&#…...
Java多线程编程中的线程间通信
Java多线程编程中的线程间通信 基本概念: 线程间通信是多线程编程中的一个重要概念,指的是不同线程之间如何协调和交换信息,以达到共同完成任务的目的。 线程间通信的目的 是确保多个线程能够按照一定的顺序和规则进行协作ÿ…...
PICO Unity APK闪退的五大根因与工程化排查指南
1. 为什么PICO项目打包APK后“秒退”不是玄学,而是可定位的工程链路断裂 “Unity打包PICO APK闪退”——这六个字在XR开发群、技术论坛和外包项目交接现场出现的频率,几乎和“黑屏”“白屏”“加载失败”并列成为移动端开发三大幽灵问题。我接手过27个P…...
ssm网上订餐系统(10089)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
《元创力》纪实录·桥段静默纪元:当叙事成为被审计的风险资产
X54先生叙事前的话:叙事模式:X54先生提供参考角度(可以不选)审查机构事先不对事实审查给了拍摄权和公映权,舆论压力出现,又要倒查,是从一个错误走向另一个错误,这会导致文艺创作者因…...
对比直接使用官方API,通过Taotoken聚合调用的成本体验
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用官方API,通过Taotoken聚合调用的成本体验 1. 从单一模型到聚合调用的成本视角 对于个人开发者或小型团队…...
集成学习驱动的智能黑盒测试:基于模型分歧的用例生成方法
1. 项目概述与核心价值在软件开发的漫长周期里,测试环节始终是保障质量、控制风险的关键闸口。然而,无论是手动编写测试用例,还是依赖传统的自动化脚本,都面临着效率瓶颈和覆盖度不足的挑战。尤其是在面对复杂的黑盒系统时&#x…...
Warcraft Helper终极指南:8大功能让魔兽争霸3在现代系统重获新生
Warcraft Helper终极指南:8大功能让魔兽争霸3在现代系统重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在Window…...
【DeepSeek缓存策略设计权威指南】:20年架构师亲授5大核心原则与3类典型场景落地实践
更多请点击: https://intelliparadigm.com 第一章:DeepSeek缓存策略设计的演进脉络与核心挑战 DeepSeek系列模型在推理服务中对缓存机制提出了严苛要求:既要应对长上下文带来的KV缓存爆炸式增长,又要兼顾多用户并发、动态批处理与…...
港中文+深大:你吃的其实是假螃蟹!?
背景 贝类过敏是重大健康风险,影响全球约2%的人群。受交叉反应影响,开展跨物种的全面致敏蛋白谱分析对优化诊断与治疗至关重要。本研究旨在鉴定并比较6种广泛食用蟹类的致敏蛋白谱。 kahouchu@cuhk.edu.hk xiaojun1985918@szu.edu.cn christineyywai@cuhk.edu.hk #过敏…...
企业内统一AI开发环境借助TaotokenCLI工具一键配置
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业内统一AI开发环境借助Taotoken CLI工具一键配置 在中大型企业的技术团队中,为所有开发者提供统一、标准化的AI服务…...
【Gemini商业价值护城河构建指南】:用4维动态估值法锁定长期LTV,错过Q3将丧失成本优化黄金窗口
更多请点击: https://kaifayun.com 第一章:Gemini生命周期价值分析 Gemini模型的生命周期价值(LTV)不仅体现在其推理性能与多模态能力上,更贯穿于部署、迭代、监控与成本优化的全链路环节。相较于传统大模型ÿ…...
