按我的理解說白了就是:
1 按微信指定的方式拼接出一個oauth url地址(
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
)
redirect_uri:my url地址
scope:snsapi_base或snsapi_userinfo
snsapi_base:靜默授權,可獲取成員的基礎信息;
snsapi_userinfo:靜默授權,可獲取成員的詳細信息,但不包含手機、郵箱;
snsapi_privateinfo:手動授權,可獲取成員的詳細信息,包含手機、郵箱
2 訪問oauth url這個地址,微信會做一些的驗證之類的工作,最終如果沒有問題,它會在my url 這個地址后面加上兩個參數:code 和 state。
3 然后跳轉到 類似於 my url ?code=xxxxxxxx&state=STATE 這個我們的地址上來了。
4 我們拿到code值之后,使用(https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE)可以得到 UserId和user_ticket
5 我們拿到user_ticket值之后,使用(https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail?access_token=ACCESS_TOKEN)+USER_TICKET
可以得到用戶詳細信息
具體可以看兩個地方的文檔
https://work.weixin.qq.com/api/doc#90000/90135/91020
https://qydev.weixin.qq.com/wiki/index.php?title=首頁
1 構造網頁授權鏈接
以下是微信官方文檔內容:
如果企業需要在打開的網頁里面攜帶用戶的身份信息,第一步需要構造如下的鏈接來獲取code參數:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
參數說明:
參數 | 必須 | 說明 |
---|---|---|
appid | 是 | 企業的CorpID |
redirect_uri | 是 | 授權后重定向的回調鏈接地址,請使用urlencode對鏈接進行處理 |
response_type | 是 | 返回類型,此時固定為:code |
scope | 是 | 應用授權作用域。企業自建應用固定填寫:snsapi_base |
state | 否 | 重定向后會帶上state參數,企業可以填寫a-zA-Z0-9的參數值,長度不可超過128個字節 |
#wechat_redirect | 是 | 終端使用此參數判斷是否需要帶上身份信息 |
員工點擊后,頁面將跳轉至 redirect_uri?code=CODE&state=STATE,企業可根據code參數獲得員工的userid。code長度最大為512字節。
示例:
假定當前 企業CorpID:wxdd725338566d6ffe 訪問鏈接:http://api.3dept.com/cgi-bin/query?action=get 根據URL規范,將上述參數分別進行UrlEncode,得到拼接的OAuth2鏈接為: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxdd725338566d6ffe&redirect_uri=http%3a%2f%2fapi.3dept.com%2fcgi-bin%2fquery%3faction%3dget&response_type=code&scope=snsapi_base&state=#wechat_redirect 員工點擊后,頁面將跳轉至 http://api.3dept.com/cgi-bin/query?action=get&code=eh3CZBgG333qs9EdaPbCAP1VaOrjuNkiAZHTWgaWsZQ&state= 企業可根據code參數調用獲得員工的userid
注意到,構造OAuth2鏈接中參數的redirect_uri是經過UrlEncode的