C#實現像微信PC版一樣的掃碼登錄功能

137752-20190221084334149-707623283.png

現在好些網站都支持掃碼登錄,感覺上安全了很多,但是本地程序掃碼登錄的不多,就用C#實現了一下,需要作如下準備

  1. 在官網上申請一個企業微信,有條件的話做個企業認證吧,我們的是認證過的,所以賬號和本地其他系統的賬號是統一的.
  2. 在應用中創建一個應用,這個是關鍵,我們掃碼就是和它有關.
  3. 點擊打開自建的應用,里面有個企業微信授權登錄
  4. 設置好可信的授權回調域名,這個域名需要是通過ICP備案的,生成的二維碼掃描后是需要跳轉到這個域名上的.
  5. 閱讀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;}

轉載于:https://www.cnblogs.com/wjbych/p/10410313.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449864.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449864.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449864.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JVM(一)史上最佳入門指南

2019獨角獸企業重金招聘Python工程師標準>>> 提到Java虛擬機(JVM),可能大部分人的第一印象是“難”,但當讓我們真正走入“JVM世界”的時候,會發現其實問題并不像我們想象中的那么復雜。唯一真正令我們恐懼的…

如何成為一個技術“牛人”

今天給浙江大學過來的幾個還沒有畢業的研究生做面試,這些研究生是想來公司實習的。在面試的過程中,一個學生問我“我們有C/C、JAVA等等多種語言,我如何才能成為某一方面的一個技術牛人呢?這一問題一直困擾著我”,對于這…

python量化數據處理小細節(以后還會不斷補充)

使用tushare數據源獲取數據后處理 以下都是本人在獲得數據后,進行量化回測時,處理數據遇到的各種坑以及解決方案,有些甚至都很幼稚,切勿嘲笑 獲取數據 導包 import tushare as ts import pandas as pd import matplotlib #(ju…

Linux find和grep的區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 grep是查找文件中匹配條件的行,find是搜索匹配條件的文件。 1.find:查找文件或目錄語法: find 查找位置 文件名或目錄名如:在…

Mysql 忘記密碼重置教程

https://jingyan.baidu.com/article/454316ab4e9e65f7a7c03ad1.html 百度經驗轉載于:https://www.cnblogs.com/leaf-cq/p/10410694.html

067:【Django數據庫】ORM查詢條件詳解-range

【Django數據庫】ORM查詢條件詳解-range range:判斷某個 field 的值是否在給定的區間中。示例代碼如下: # views.py文件內容:from datetime import datetime from django.utils.timezone import make_awaredef index(request):start_time ma…

貼吧爬蟲

import requests import re#根據url獲取網頁html內容 def getHtmlContent(url):page requests.get(url)return page.texthtml getHtmlContent(https://tieba.baidu.com/p/4840106397)#以html中使用re模塊解析出所有jpg圖片的url #百度貼吧html中jpg圖片的url格式:…

別把自己變成了“二等公民”

上周參加一個代碼審查會,在會上發現了設計上的一個很嚴重的錯誤。于是,我提了好幾個問題,想知道為什么會出現這一錯誤。但是,我的同事告訴我這都是印度團隊做的設計。需要提供的一個背景信息是,這個項目是我所在的研發…

jquery函數加載及生成隨機數

$(document).ready(function () {var code ; //在全局定義驗證碼  1.將函數寫好 function createCode(){code "";var codeLength 4;//驗證碼的長度var checkCode document.getElementById("code");var random new Array(0,1,2,3,4,5,6,7,8,9,A,B,C…

rsync解說

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一、簡介1、認識Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間…

關于java中getClass()和getSuperClass()的講解

為了講解這個問題,我們先來看一下下面的代碼: package com.yonyou.test;import java.util.Date;class Test extends Date{private static final long serialVersionUID 1L;public static void main(String[] args) {new Test().print();}public void print(){Syste…

期權回測框架設計思路

期權回測,博主已經研究了很長時間,也接觸了不少平臺,如真格,以及這位博主提供的思路(https://blog.csdn.net/luoqingyong/article/details/107523930),利用backtrader進行期權回測。確實國內做期…

UVA815

這道題主要學到的就是數據結構的組織,一些需要從小到大排列的東西,這些東西還有對應的東西。這個時候使用map可以解決 下面貼出代碼。其中所使用的思想,估計這個東西是沒法學的,這就只能是靈感 //這是什么吉爾題,題意都…

我對應聘者的面試原則

最近參與了幾次單位招聘面試工作,在面試工程師時,我是用我的分層準則指導與候選人的交流內容,以確定他的能力層次是否達到我所期望的。大體上軟件工程師可以分為三大層次,分別是技術知識積累層、掌握設計方法層以及運用開發方法論…

rsync:基本命令和用法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 2.1 說在前面的話 rsync官方網站: https://www.samba.org/ftp/rsync/rsync.html rsync是可以實現增量備份的工具。配合任務計劃&#…

Java常見排序算法之堆排序

在學習算法的過程中,我們難免會接觸很多和排序相關的算法。總而言之,對于任何編程人員來說,基本的排序算法是必須要掌握的。 從今天開始,我們將要進行基本的排序算法的講解。Are you ready?Let‘s go~~~ 1、排序算法的…

python量化數據處理小細節2

處理數據主要使用的是DataFrame格式,偶爾也會有list格式。 首先定位尋找數據:主要為loc,iloc 創建DataFrame: df pd.DataFrame([1,2,3,4,5],index [a,b,c,d,e],columns[aa])或 datapd.DataFrame(np.arange(16).reshape(4,4),i…

python編碼問題

參考:https://blog.csdn.net/qq_33692803/article/details/81321340 注意區分系統默認編碼和本地默認編碼、編碼和解碼的區別轉載于:https://www.cnblogs.com/jianglinliu/p/10418437.html

軟件工程師所需掌握的“終極技術”是什么?

最近,我在微博上看到程序員鄒欣老師發的一條微博 — “不少大學同學都有一個想法:先做幾年技術,然后做管理;也有一些同學說:我技術不行,希望直接找到一個管理的工作,就像PM那樣。請看 PM 需要什…

linux中項目部署和日志查看

1 查找進程 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 ps -ef | grep java 查看所有關于java的進程 root 17540 1 0 2009 ? 01:42:27 /usr/java/jdk1.5.0_1…