1. 程式人生 > >微信開發之網站微信授權登入-C#

微信開發之網站微信授權登入-C#

一、前言

網站微信授權登入的準備工作:官方介面文件  ,微信服務號(怎麼註冊我就不提了),準備工作做好了過後,梳理流程,切勿愣頭青,先把流程梳理好,才好帶入業務

注意:如果沒有認證的服務號,可以用測試賬號,測試賬號預設支援100個關注的微訊號。

官方文案:  網站應用微信登入是基於OAuth2.0協議標準構建的微信OAuth2.0授權登入系統。在進行微信OAuth2.在進行微信OAuth2.0授權登入接入之前,在微信開放平臺註冊開發者帳號,並擁有一個已稽核通過的網站應用,並獲得相應的AppID和AppSecret,申請微信登入且通過稽核後,可開始接入流程。

二、思路

這裡是官方的授權流程圖,根據流程圖顯示,首先是發起授權登入的請求,然後重定向微信,微信又會重新跳轉到使用者設定好的url上面,並且寫到了code引數,通過code引數加上AppIdheAppSecret,換取到token,最後根據token拿到使用者的資訊,操作就結束了。

三、場景程式碼

第一步,進行微信授權獲取code,  請求路徑:https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect   引數需求:

  

下面貼上我自己的程式碼:

string Hdurl = "這裡填寫你的微信重定向路徑必須為域名";
string URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + WeiXinConfig.appid + "&redirect_uri=" + URLEncoder.encode(Hdurl) +
"&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";        return "redirect:" + URL;

如果時候請求成功的話,微信會彈出一個授權框,點選同意,就會跳轉到自己設定的重定向路徑。記住code是攜帶在get請求裡面的,拿到code後,通過code去get請求,獲取token,這裡注意一點要獲取伺服器的token必須在要公共平臺裡面的基本設定,設定IP白名單

貼上我的程式碼:

//獲取access_tokenstring oauthTokenUrl = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", WXHelper.appId, WXHelper.secret, code);
OAuthToken oauthToken = JsonConvert.DeserializeObject<OAuthToken>(new WXHelper().Request(oauthTokenUrl, "", "GET"));

這裡如果沒有問題的話,響應回來的json資料,裡面就會有access_token這個引數裡面攜帶了token,注意一點,token有效時間為兩個小時,toekn一天是用使用上限的預設為2000,微信裡面的很多操作都需要使用toekn,所以可以根據token設定一套過期機制,過後期才去申請新,順帶還有使用者的openid。

下面進行微信授權的最後一步,通過token和openid獲取使用者的基本資訊

 貼上程式碼:

string userUrl = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN", accesstoken, oauthToken.openid);
OAuthUserInfo userInfo = JsonConvert.DeserializeObject<OAuthUserInfo>(new WXHelper().Request(userUrl,"", "GET"));

不出問題的話,就會通過響應的json資訊就能拿到使用者的基本資訊了,微信授權登入的所有操作就完成了,然後開發者可以根據自己的業務進行下一步流程。

四、總結

其實微信網頁授權登入,算是微信開發裡面,比較簡單的功能了,引數細心注意一點的話基本可以一次過了,最後如果這篇文章有什麼不好的地方,希望大家指出來,如果能幫助到那些沒有思路沒有接觸過微信開發的小夥伴解決問題,這就是我寫部落格最大的動力。

要完整程式碼,請關注公眾號[程式設計師老兵],回覆“授權登入-C#”