應用被授權方企業號授權后,授權方企業號用戶即可以登錄應用。至此,接入企業號第三方應用的開發到了最后一步——獲取登錄用戶信息。
在企業號開發中要獲取用戶信息,需要獲取到用戶經OAuth2.0驗證時生成的code與企業號的corpid。在企業號第三方應用中也是需要得到這兩個參數才能調用之后的一系列接口,特別的是,在企業號開發中corpid是自己的企業號固定的corpid,而企業號第三方應用要獲取的則是授權方企業號corpid。
一、獲取OAuth2.0的用戶身份code
OAuth2.0驗證接口說明
企業應用中的URL鏈接(包括自定義菜單或者消息中的鏈接),可以通過OAuth2.0驗證接口來獲取成員的身份信息。
通過此接口獲取成員身份會有一定的時間開銷。對於頻繁獲取成員身份的場景,建議采用如下方案:
1、企業應用中的URL鏈接直接填寫企業自己的頁面地址
2、成員跳轉到企業頁面時,企業校驗是否有代表成員身份的cookie,此cookie由企業生成
3、如果沒有獲取到cookie,重定向到OAuth驗證鏈接,獲取成員身份后,由企業生成代表成員身份的cookie
4、根據cookie獲取成員身份,進入相應的頁面
注意,此URL的域名,必須完全匹配企業應用設置項中的'可信域名'(如果你的redirect_uri有端口號,那'可信域名'也必須加上端口號),否則跳轉時會提示redirect_uri參數錯誤。
企業獲取code
企業如果需要員工在跳轉到企業網頁時帶上員工的身份信息,需構造如下的鏈接:
- 參數說明
參數 | 必須 | 說明 |
---|---|---|
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。
假設我們處理登錄邏輯的路徑為http://AAA.com/api/weixin/login.do
在設置應用的主頁路徑時我們可以設置為OAuth驗證的路徑,而主頁URL又支持$CORPID$模板,所以我們可以設置主頁URL如下
https://open.weixin.qq.com/connect/oauth2/authorize?appid=$CORPID$&redirect_uri=http%3A%2F%2FAAA.com%2Fapi%2Fweixin%2Flogin.do&response_type=code&scope=snsapi_base&state=1#wechat_redirect
二、獲取corpid
經過OAuth驗證后跳轉的路徑為頁面將跳轉至 redirect_uri?code=CODE&state=STATE,URL中我們只能獲取到code,我們更希望跳轉后的路徑是redirect_uri?corpid=CORPID&code=CODE&state=STATE,從而把corpid一並獲取。
考慮到URL支持$CORPID$模板,邏輯上是會把我們配置的URL中所有$CORPID$字段轉換成授權方企業號的corpid,所以我們把redirect_uri改為如下
http://AAA.com/api/weixin/login.do?corpid=$CORPID$
而$CORPID$應該是url轉碼后再加入,以防止$符號被編碼,所以最后我們得出的主頁URL為
https://open.weixin.qq.com/connect/oauth2/authorize?appid=$CORPID$&redirect_uri=http%3A%2F%2FAAA.com%2Fapi%2Fweixin%2Flogin.do%3Fcorpid%3D$CORPID$&response_type=code&scope=snsapi_base&state=1#wechat_redirect
得到corpid后我們即可根據企業號第三方應用接口獲取到授權方企業的AccessToken,進而獲取授權方企業號的用戶信息。
消息:新博客地址 blog.leapmie.com,以后的更新都會在新博客首發,感謝支持~(園子視情況更新)