1. 程式人生 > >微信登入開發-java

微信登入開發-java

微信登入:
1、申請微信開放平臺,獲取微信登入介面
2、測試登入介面是否正常
redirect_uri重定向地址(微信申請的http://+‘授權回撥域’),需要進行UrlEncode。
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
3、開發後臺接收程式碼
4、兩種二維碼嵌入方法:
一、使用微信頁面
在介面使用<a href="https://open.weixin.qq.com/connect/qrconnect?appid=appid&redirect_uri=url&response_type=code&scope=snsapi_login&state=state#wechat_redirect"></a>
該方法不需要再對工程的介面進行什麼js處理。
二、使用 網站內嵌二維碼
在需要使用二維碼的介面新增
展示二維碼的位置設定<div id="login_container"></div>  id與js裡面的id一致
(在頁面最後面)
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
<script>
var obj = new WxLogin({
                              id:"login_container", 
                              appid: "appid", 
                              scope: "snsapi_login", 
                              redirect_uri: "http%3a%2f%2fXXXX.com%2fregist%2fwxlogin",
                              state: "state",
                              style: "black",
                              href: ".impowerBox .title {display: none;}"
                            });
</script>
注:該方法是微信js幫忙生成的二維碼,不需要再新增圖片什麼的。
5、再Action層獲取code進行需要的業務處理
String code = request.getParameter("code");

6、有什麼需要獲取的根據微信提供的api進行後臺訪問拼接的介面地址可以返回對應的資料。

簡單原理:

表面上的步驟如下:
1、[電腦] 開啟https://open.weixin.qq.com/,得到二維碼
2、[手機] 點開掃一掃,掃描PC端二維碼,並且掃描成功
3、[電腦] 提示掃描成功,[手機] 詢問是否確認登陸

4、[手機] 確認登陸

5、[電腦] 跳轉到配置的網址


其實對應的內部機制差不多是這樣的:
1、電腦請求網頁後,微信伺服器生成一個唯一的ID(這裡是UUID)給客戶端網頁,客戶端定時發起向微信伺服器的連線(這裡類似於輪詢),微信伺服器保持這個連線(這裡類似於長連線),保持一段時間(大概27秒)返回一個“還沒人掃碼”的標識,於是客戶端再開連線
2、手機微信掃碼並解碼,解碼出來是一個URL也好,是一段文字也好,總之這段東西匹配了手機微信登陸網頁版的要求,於是手機微信帶著解碼出來的資訊去請求微信伺服器。這裡就已經達到了特定微信賬號和某個特定網頁相關聯的目的
3、電腦這裡微信伺服器馬上在長連線中返回“有人掃碼了”的表示並結束連線,網頁提示掃描成功,然後開啟長連線等待確認登陸的標識;手機這裡麼則根據二維碼的資訊開啟對應網頁確認登陸
4、後面其實和前面一樣了,手機微信確認登陸的其實就是請求伺服器說這個可以登入了,然後伺服器給網頁的長連線中返回可以登入的標識並結束長連線,然後跳轉到訊息網頁