热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

.netcore实现微信登陆

publicconststringappId;申请的微信给的appIdpublicconststringappSecret;申请的微信给的appsecretpublicco

public const string appId = "";//申请的微信给的appIdpublic const string appSecret = "";//申请的微信给的appsecretpublic const string redirecturl = "";//申请的微信的回调地址#region 微信登陆///

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

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

View Code

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

望参考的游客&#xff0c;还仅供参考。

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



推荐阅读
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • python限制递归次数(python最大公约数递归)
    本文目录一览:1、python为什么要进行递归限制 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
author-avatar
mobiledu2502898533
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有