現在好些網站都支持掃碼登錄,感覺上安全了很多,但是本地程式掃碼登錄的不多,就用C 實現了一下,需要作如下準備 1. 在官網上申請一個企業微信,有條件的話做個企業認證吧,我們的是認證過的,所以賬號和本地其他系統的賬號是統一的. 2. 在應用中創建一個應用,這個是關鍵,我們掃碼就是和它有關. 3. 點擊 ...
現在好些網站都支持掃碼登錄,感覺上安全了很多,但是本地程式掃碼登錄的不多,就用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;
}