這是微信開發的第二篇博客,原本想第一篇從這篇開始的 這裏銜接第一篇微信公衆號H5支付,可是不少開發者作微信開發僅僅是使用支付功能而已,這裏切入主題想必不少開發者從事微信公衆號開發,都有需求制定本身的第三方網站,爲了加強用戶體驗感,下降用戶的流失率,會在用戶經過公衆號點擊第三方網站的時候,就進行受權登陸,開發者就能獲取到用戶的一些我的信息,例如頭像,openid,地址等,從而完善用戶的我的信息。html
網站微信受權登陸的準備工做:官方接口文檔 ,微信服務號(怎麼註冊我就不提了),準備工做作好了事後,梳理流程,切勿愣頭青,先把流程梳理好,纔好帶入業務json
官方文案: 網站應用微信登陸是基於OAuth2.0協議標準構建的微信OAuth2.0受權登陸系統。在進行微信OAuth2.在進行微信OAuth2.0受權登陸接入以前,在微信開放平臺註冊開發者賬號,並擁有一個已審覈經過的網站應用,並得到相應的AppID和AppSecret,申請微信登陸且經過審覈後,可開始接入流程。api
這裏是官方的受權流程圖,根據流程圖顯示,首先是發起受權登陸的請求,而後重定向微信,微信又會從新跳轉到用戶設置好的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=" + WeiXinConfig.scope + "&state=STATE#wechat_redirect"; return "redirect:" + URL;
若是時候請求成功的話,微信會彈出一個受權框,點擊贊成,就會跳轉到本身設置的重定向路徑。記住code是攜帶在get請求裏面的,拿到code後,經過code去get請求,獲取token,這裏注意一點要獲取服務器的token必須在要公共平臺裏面的基本設置,設置IP白名單app
貼上個人代碼:網站
//獲取token logger.info("獲取code ——————" + code); String tokenUrl = " https://api.weixin.qq.com/sns/oauth2/access_token"; String TokenJson = HttpRequest.sendGet(tokenUrl, "appid=" + WeiXinConfig.appid + "&secret=" + WeiXinConfig.AppSecret + "&code=" + code + "&grant_type=authorization_code"); logger.info("獲取token ——————" + TokenJson.toString());
這裏若是沒有問題的話,響應回來的json數據,裏面就會有access_token這個參數裏面攜帶了token,注意一點,token有效時間爲兩個小時,toekn一天是用使用上限的默認爲2000,微信裏面的不少操做都須要使用toekn,因此能夠根據token設置一套過時機制,事後期纔去申請新,順帶還有用戶的openid。url
下面進行微信受權的最後一步,經過token和openid獲取用戶的基本信息spa
貼上代碼:
String userUrl = "https://api.weixin.qq.com/sns/userinfo"; String userInfo = HttpRequest.sendGet(userUrl, "access_token=" + token.getAccess_token() + "&openid=" + token.getOpenid() + "&lang=zh_CN"); logger.info("獲取userInfo ——————" + userInfo.toString());
不出問題的話,就會經過響應的json信息就能拿到用戶的基本信息了,微信受權登陸的全部操做就完成了,而後開發者能夠根據本身的業務進行下一步流程。
其實微信網頁受權登陸,算是微信開發裏面,比較簡單的功能了,參數細心注意一點的話基本能夠一次過了,最後若是這篇文章有什麼很差的地方,但願你們指出來,若是能幫助到那些沒有思路沒有接觸過微信開發的小夥伴解決問題,這就是我寫博客最大的動力。
文章純手寫,轉載請帶上做者。