net c#使用微信公众号登录网站的案例

  介绍

这篇文章给大家分享的是有关。净c#使用微信公众号登录网站的案例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

适用于:本文适用于有一定微信开发基础的用户

<强>引言:
花了300大洋申请了微信公众平台后,发现不能使用微信公众号登录网站(非微信打开)获得微信帐号。仔细研究后才发现还要再花300大洋申请微信开放平台才能接入网站的登录。于是做为屌丝程序员的我想到了自己做一个登录接口。

<强>工具和环境:
1。VS2013 .net4.0 c# MVC4.0剃刀
2。插件
。Microsoft.AspNet.SignalR;时时获取后台数据
B.Gma.QrCodeNet.Encoding;文本生成二维码

<强>实现的目标
1。在电脑上打开网站登录页,提示用户使用微信扫描登录确认。
2。用户通过微信扫描确认后,电脑自动收到确认信息跳转到网站主页。

<强>原理分析
1. SignalR是一个神奇的工具,能从浏览器一个发送信息到服务器,服务器自动推送消息到指定的浏览器b那么我的计划是用电脑的浏览器打开登录页,生成一个二维码(内容为带有微信公众平台网页用户受权的网址),用微信的描码功能打开这个网站。将获取的微信用户OPENID通过SignalR发送到电脑浏览器,实现登录功能

<>强实现过程
1。微信公从平台的注册和权限(略过…)
2. vs2013中新建MVC网站,我用的环境为.NET4.0 c# MVC4.0,剃刀引擎(一个人习惯)。

。净c#使用微信公众号登录网站的案例

3。安装SignalR
VS2013点击工具==比;库程序包管理器==比;程序包管理控制台

输入以下命令:
安装包Microsoft.AspNet。SignalR - version 1.1.4

.net4.0 Mvc4环境下建议安装1.1.4高版本安装不上

安装SingnalR成功

。净c#使用微信公众号登录网站的案例

设置SignalR

。净c#使用微信公众号登录网站的案例

var配置=new Microsoft.AspNet.SignalR.HubConfiguration ();
配置。EnableCrossDomain=true;
RouteTable.Routes.MapHubs(配置);

新建一个类PushHub。cs

using  Microsoft.AspNet.SignalR;   using  Microsoft.AspNet.SignalR.Hubs;   using 系统;   using  System.Collections.Generic;   using 来;   using 包含;   namespace  WD.C.Utility   {   ,///& lt; summary>   ,///标注Single  javascription要连接的名称   ,///& lt;/summary>   ,(HubName (“pushHub")]   ,public  class  PushHub :中心   ,{   ,///& lt; summary>   ,///临时保存请求的用户   ,///& lt;/summary>   ,static  Dictionary<字符串,string>, rlist =, new  Dictionary<字符串,string> ();   ,   ,///& lt; summary>   ,///登录请求的用户;打开登录页执行本方法,用于记录浏览器连接的ID   ,///& lt;/summary>   ,public  void  ruserConnected ()   ,{   (!,if  rlist.ContainsKey (Context.ConnectionId))   ,rlist.Add (Context.ConnectionId, string.Empty);      ,//客户方式表示对指定ID的浏览器发送GetUserId方法,浏览器通过javascrip方法GetUserId (string)得到后台发来的Context.ConnectionId   ,Clients.Client (Context.ConnectionId) .GetUserId (Context.ConnectionId);   ,}   ,///& lt; summary>   ,///实际登录的用户   ,///& lt;/summary>   ,///& lt; param  name=皉user"祝辞请求的用户ID   ,///& lt; param  name=發ogUserID"在微信OPENID   ,public  void  logUserConnected (string 诡计,string  logUserID)   ,{   ,if  (rlist.ContainsKey(俄文)   ,{   ,rlist.Remove(俄文);      ,//客户方式表示对指定ID的浏览器发送GetUserId方法,浏览器通过javascrip方法userLoginSuccessful (bool,字符串)得到后台发来的登录成功,和微信OPENID   (俄文),Clients.Client .userLoginSuccessful(真的,,logUserID);   ,}   ,}   ,}   }

新建一个MVC控制器“LoginController.cs",这个不会看别的教程;

using 系统;   using  System.Collections.Generic;   using 来;   using 包含;   using  System.Web.Mvc;   namespace  WD.C.Controllers   {   ,public  class  LoginController :控制器   ,{   ,//,//得到:/登录/,///& lt; summary>   ,///登录主页,电脑端打开   ,///& lt;/summary>   ,///& lt; returns> & lt;/returns>   ,public  ActionResult 指数()   ,{   ,/*参考,https://mp.weixin.qq.com/wiki?t=resource/res_main& id=mp1421140842&朗牌=,=zh_CN   ,* 1. url用于生成二维码给微信扫描   * 2。格式参考微信公从平台帮助   *大敌;https://open.weixin.qq.com/connect/oauth3/authorize?appid=APPID& redirect_uri=REDIRECT_URI& response_type=code&范围=SCOPE&状态=# wechat_redirect 若提示”该链接无法访问”,请检查参数是否填写错误,是否拥有范围参数对应的授权作用域权限只   ,* 3. redirect_uri内容为返回地址,需要开发者需要先到公众平台官网中的“开发,安康;接口权限,安康;网页服务,安康;网页帐号,安康;网页授权获取用户基本信息”的配置选项中,修改授权回调域名   ,* 4. redirect_uri应回调到WxLog页并进行URLEncode编码,如:,redirect_uri=GetURLEncode (“http://你的网站/登录/WxLog ?诡计=?;,诡计为PushHub中的Context.ConnectionId到视图中配置,   ,*   ,*/=,,ViewBag.Url  string.Format (“https://open.weixin.qq.com/connect/oauth3/authorize?appid={0}, redirect_uri={1}, response_type=code&范围=snsapi_base&状态={2}# wechat_redirect",, B.Helper.AppID,, GetURLEncode (“http://你的网站/登录/WxLog ?诡计=?,,Guid.NewGuid ());   ,return 视图();   ,}      ,///& lt; summary>   ,///登录确认页,微信端打开   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

net c#使用微信公众号登录网站的案例