public const string appId = "";//申请的微信给的appIdpublic const string appSecret = "";//申请的微信给的appsecretpublic const string redirecturl = "";//申请的微信的回调地址#region 微信登陆/// <summary>/// 微信授权页面/// </summary>/// <returns></returns>public virtual IActionResult WechatAuthorize(){var url = $"https://open.weixin.qq.com/connect/qrconnect?appid={appId}&redirect_uri={redirecturl}&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect";return new RedirectResult(url);}/// <summary>/// 微信回调方法/// </summary>/// <returns></returns>public virtual IActionResult WechatLogin(){var code = Request.Query["code"];var dis = GetAuthorityWechatAccessToken(code);if (!dis.ContainsKey("openid") || !dis.ContainsKey("access_token"))return null;var userinfo = GetWechatUserInfo(dis["access_token"], dis["openid"]);return null;}/// <summary>/// 微信比QQ在获取Token的时候返回了OpenId和UnionId。/// </summary>/// <param name="code"></param>/// <returns></returns>public virtual Dictionary<string,string> GetAuthorityWechatAccessToken(string code){if (string.IsNullOrEmpty(code))return null;var url =string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",appId, appSecret, code);HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;var json = WebRequestHelper.GetResponse(request, "utf-8");if (string.IsNullOrEmpty(json))return null;if (!json.Contains("access_token")){return null;}var dis = json.DeserializeJson<Dictionary<string, string>>();return dis;}/// <summary>/// 获取微信用户信息/// </summary>/// <param name="token"></param>/// <param name="openid"></param>/// <returns></returns>public virtual  Dictionary<string,object>GetWechatUserInfo(string token,string openid){var url = $"https://api.weixin.qq.com/sns/userinfo?access_token={token}&openid={openid}";HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;var json = WebRequestHelper.GetResponse(request, "utf-8");var dis = json.DeserializeJson<Dictionary<string, object>>();if (dis == null || dis.ContainsKey("errcode"))return null;return dis;}#endregion

View Code

//请求接口方法
public static string GetResponse(WebRequest request, string encoding){using (WebResponse response = request.GetResponse()){var stream = response.GetResponseStream();if (stream == null) return null;using (var reader = new StreamReader(stream, Encoding.GetEncoding(encoding))){return reader.ReadToEnd();}}}

View Code

这个没有测试登陆,因为看文档和QQ登陆大同小异,连代码都是差不多的。所以就没有测试了。

望参考的游客,还仅供参考。

转载于:https://www.cnblogs.com/CnnBlog/p/11451374.html

.net core 实现微信登陆相关推荐

  1. openid java_微信小程序调用微信登陆获取openid及java做为服务端示例

    一.微信小程序 第一步:调用 wx.login获取code 文档地址 第二步:判断用户是否授权读取用户信息 文档地址 第三步:调用wx.getUserInfo读取用户数据 文档地址 第四步:由于小程序 ...

  2. html5app微信登陆,基于h5+的微信登陆,hbuilder打包

    wxLoginFn() { let self= this; getService()//微信受权登陆对象 let aweixin = null;//当前环境支持的全部受权登陆对象 let auths ...

  3. 微信开发必看,使用.Net Core 开发微信跨平台应用

    .NET Core 是一个开源通用的开发框架,源码由微软官方和社区共同支持.支持跨平台,即支持在 Window,macOS,Linux 等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式/物联 ...

  4. Android之调用微信登陆、分享、支付

    转载:http://blog.csdn.net/lowprofile_coding/article/details/48086381 前言:用了微信sdk各种痛苦,感觉比qq sdk调用麻烦多了,回调 ...

  5. java微信demo_微信登陆 , 简单的demo , java

    这几天简单的做了一下微信登陆的demo,希望对大家有帮助 不多说,直接上代码: /** * * @author TY * */ @Controller @RequestMapping("/w ...

  6. 骏飞H5幸运刮刮乐源码多级分佣+upupw直接架设+H5微信登陆公众号接入 管理员

    简介: 骏飞H5幸运刮刮乐源码多级分佣+upupw直接架设+H5微信登陆公众号接入 管理员 网盘下载地址: http://kekewl.net/pWg5xjUEhkm0 图片:

  7. 完整的微信登陆 接收消息流程

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1. G ...

  8. 王者荣耀微信登陆不了服务器,王者荣耀微信区怎么登陆不了 王者荣耀微信区怎么登不上...

    王者荣耀元旦积分版V1.16.5.15 安卓版 类型:角色扮演大小:323M语言:中文 评分:7.6 标签: 立即下载 王者之路,带他一路超神.今天有不少玩家反映说在微信登陆不上游戏,突然460,到底 ...

  9. cocos creator接入微信登陆sdk android篇

    cocos creator接入微信登陆sdk 背景 项目引擎使用cocos creator,使用android studio集成开发工具,在开发之前先做好准备工作 在微信开放平台上创建好移动应用,拿到 ...

最新文章

  1. gradient boosted regression tree
  2. VTK:Video之FFMPEG
  3. VS2010中使用JSONCPP方法
  4. JAVA中的日志框架-log4j的使用
  5. Polly组件对微服务场景的价值
  6. 最长有序子序列—动态规划算法
  7. c语言判断字符配对,【C语言】判断花括号{}是否匹配
  8. python中文注释
  9. 动态规划求解所有字符的组合数
  10. Oracle 数据文件(Datafile ) 大小 限制 说明
  11. HDU 5427 A problem of sorting 水题
  12. Mac端将本地新项目上传到github
  13. mybatis批量写入及批量更新
  14. es6之模块化(module)--绝对能看懂
  15. Visual C#.Net 网络程序开发-Socket篇
  16. 计算机网络中的A类、B类、C类地址的划分
  17. markdown实心圆点空心圆点、层级
  18. 特网云 DirectAdmin 安装SSL
  19. MATLAB指纹识别文献综述
  20. 浅析ERP系统--质量

热门文章

  1. 【论文阅读报告】 Real-time Personalization using Embeddings for Search Ranking at Airbnb
  2. 有苦有乐的算法 --- 一个无序数组,如果从小到大排好序,任何一个元素任何一个元素移动索引长度不超过k,实现排序
  3. 去掉wps的word中首字母大写
  4. 单片机备用电池供电电路_可用电池供电的单片机电源电路
  5. 打车APP为何贴钱做生意?
  6. 四、Amlogic A311D 音频回采信号LOOPBACK指南
  7. SQL Server之菜鸟入坑学习练习01
  8. Q-learning例1探索者【学习笔记3】
  9. 华为存储OceanStor 5110V5 CA证书即将过期告警处理
  10. [LeetCode]122. Best Time to Buy and Sell Stock II