隐藏

C#实现像微信PC版一样的扫码登录功能

发布:2022/3/8 16:10:03作者:管理员 来源:本站 浏览次数:1351

现在好些网站都支持扫码登录,感觉上安全了很多,但是本地程序扫码登录的不多,就用C#实现了一下,需要作如下准备


   在官网上申请一个企业微信,有条件的话做个企业认证吧,我们的是认证过的,所以账号和本地其他系统的账号是统一的.

   在应用中创建一个应用,这个是关键,我们扫码就是和它有关.

   点击打开自建的应用,里面有个企业微信授权登录

   设置好可信的授权回调域名,这个域名需要是通过ICP备案的,生成的二维码扫描后是需要跳转到这个域名上的.

   阅读API文档构造扫码登录链接,用户身份获取等

   上面这些看起来很多,但是如果做过企业微信号程序开发,那么就是设置个域名的事情.


下面转到C#这里,登录界面上放一个webbrowser控件,用于显示扫码登录链接,再放一个图片控件用于显示二维码,等用户扫了二维码后就跳转到自己设置的可信授权域名处作身份验证,验证通过后就自动登录.


private void Form_load_Load(object sender, EventArgs e)

{


 web1.Navigate("https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=wxc&agentid=1000002&redirect_uri=http://wx.qq.com.cn/test/load.aspx&state=STATE");


}


private void web1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{


       if (count == 1)

       {

           foreach (HtmlElement he in web1.Document.GetElementsByTagName("img"))

           {

               string str = he.GetAttribute("className");

               if (str == "qrcode lightBorder")

               {

                   pic_code.ImageLocation =he.GetAttribute("src"); //获取微信生成的二维码图片,那个网页中只有两个图片,且二维码是第二张图片.

               }

           }

       }


      //扫码通过企业微信验证后才会执行下面的代码.通过检测网址中是否包含用户身份的code来判断是否通过了微信验证

       string url = web1.Url.ToString();

       string temp = "code";

       bool Flag = url.Contains(temp);

       if (Flag == true)

       {

           cbox_yhm.Text = url;

           cbox_yhm.Text=web1.Document.GetElementById("L_name").OuterText.ToString();

           txt_pwd.Text = "123456";

           web1.Visible = false;

           button1.PerformClick();

       }

       count += 1;

   }