用戶要求在微信端登錄一次后,以后不需要再登錄. 我的系統是單獨的一個網站. 使用MVC的記住密碼功能, 如果用戶重啟,就還是要輸入密碼,所以需要有一個唯一不變的用來標示用戶的ID。 OpenID就是這樣,微信用戶對於每個公眾號它都是唯一的,不管關注還是不關注。
如何做到呢?
使用微信的網頁授權(OAuth2.0),簡單點理解這個東西就是跑到微信去請求個回調,微信跳轉到你給的回調頁面,然后在頁面后面加個code, 你拿着code 去微信取你要的信息。
(1), 去公眾號后台設置回調的域名
在開發-- 接口權限 -- 網頁賬號-- 用戶授權獲取用戶基礎信息 點擊 “修改”,輸入域名。 如
www.baidu.com
(2) 綁定開發者微信號: 在開發--開發者工具 -- web開發者工具--進入 綁定開發者微信
(3) 這個時候你就可以試着看到code. 比如
在微信web開發者工具中輸入
https://open.weixin.qq.com/connect/oauth2/authorize?appid=*******&redirect_uri=www.baidu.com&response_type=code&scope=snsapi_base&state=1#wechat_redirect
頁面就會跳轉到 www.baidu.com?code=***. 就可以看到code了。
(4) 通過code 來獲取openID
https://api.weixin.qq.com/sns/oauth2/access_token?appid=***&secret=***&code=***&grant_type=authorization_code
會返回json 數據包,里面有要得OpenID 。 具體可以參見:
http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
這里注意的是一個code只能使用一次,我開始不知道,反復去取,導致程序時而好時而不好。 Code 5分鍾不用就過期。
我這里只是去了OpenID。如果要取用戶的其它信息,就需要在取code的時候改scope=snsapi_userinfo。 開發者文檔也有詳細記錄