微信登陸

     微信官方介紹html

    在進行微信OAuth2.在進行微信OAuth2.0受權登陸接入以前,在微信開放平臺註冊開發者賬號,並擁有一個已審覈經過的網站應用,並得到相應的AppID和AppSecret,申請微 信登陸且經過審覈後,可開始接入流程。api

獲取二維碼

   官方文檔已經寫明,開發者帳號審覈要¥300,網站應用在開放平臺的管理中心中便可建立,審覈也很快。審覈經過以後就拿到了AppID和AppSecret。剛開始搞成公衆號的AppId致使url一直獲取不到二維碼,提示scope或沒有權限。服務器

   

另外網站應用的域名也不要寫錯。寫錯了,改一次起碼要等次日才能玩了。微信

  

https://open.weixin.qq.com/connect/qrconnect?appid=wxd96be4258f671daa&redirect_uri=http://www.warmwood.com/WeiXinAuth&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect app

  參數正確以後就能夠獲得正確的二維碼。接下來就是獲取用戶信息並登陸。框架

實現登陸

  這個時候我傻了一下,這怎麼調試呢,二維碼只認網站應用中設置好的域名,你的localhost玩不起來。難道打日誌?還要到服務器上看日誌記錄,這個過程有點糾結。在知乎上看到微信發佈了一個Web開發者工具。下下來不知道怎麼本地調試,沒有見到設置的地方(羞愧中...)。由於代碼很少,先用笨辦法實現了。這裏用到了Senparc框架。工具

複製代碼
         var code = Request.QueryString["code"]; var state = Request.QueryString["state"]; //若用戶禁止受權,則重定向後不會帶上code參數,僅會帶上state參數 if (code != null) { //redirect_uri?code=CODE&state=STATE Logger.Info("code爲:" + code); Logger.Info("state爲:" + state); //2. 經過code參數加上AppID和AppSecret等,經過API換取access_token; var url = string.Format( "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appId, appSecret, code); var result = CommonJsonSend.Send<OAuthAccessTokenResult>(null, url, null, CommonJsonSendType.GET); OAuthUserInfo userInfo = OAuthApi.GetUserInfo(result.access_token, result.openid); var user = QueryOrCreateUser(userInfo); AuthenticationService.SignIn(user,true);
}
複製代碼

OAuthApi.GetUserInfo獲取到了相關的用戶信息,包含用戶的頭像,城市等,這樣方便咱們建立或者查找到用戶,而後SignIn便可。但若是一個用戶用多種第三方登陸,這個是就須要判別這些號是同一我的,而不至於建立多個用戶。post

獲取到的信息沒有郵箱和密碼,須要再作個頁面讓用戶設置郵箱和新密碼網站

公衆號登陸

微信內登陸和網站掃碼不同。scope是用userinfo. 網站掃碼須要在開發平臺中建立網站應用,這二者的獲得的openid不同,但支付的appid必須和商戶的id匹配,不然不能支付。 url

  <a title="微信登陸" class="logwx" id="zhilogon" href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxd6bc2f224b5ffbac&redirect_uri=http://www.xxx.com/weixinAuth&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"> <img src="/images/logwx.png" /> </a>

若是沒有使用公衆號的appid,用建立的網站應用的appid也是能夠一鍵登陸的,區別就在於你的商戶號綁定的是哪一個appid,這決定這個openid能不能用來公衆號內的支付。

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx0caae1edac6498a2&redirect_uri=http://www.xxx.com/weixinAuth&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect

公衆號和網頁應用的登陸界面分別以下

 

界面略有不一樣。

關於本地調試

後面看到了ngrok以及相關介紹,應該是正解。 這個文檔比較清楚,就不介紹了。

參考博客:http://www.cnblogs.com/fengwenit/p/4653940.html   

Senparc: http://pan.baidu.com/s/1o8AbxkI

ngrok: http://jingyan.baidu.com/article/f006222826c2bcfbd3f0c885.html

ngrok下載:http://pan.baidu.com/s/1dFv0A69 

官網:https://dashboard.ngrok.com/get-started

相關文章
相關標籤/搜索