業務需求:
php
企業號微信端綁定一個應用,此應用可見範圍爲添加的企業受權員工(非微信裏受權的員工之外人員不可訪問)。html
問題:後端
當員工分享出去後,別的人也能夠打開訪問,如今須要進行驗證,打開連接時判斷是否爲企業受權人員 ,不是則不能訪問。
api
解決策略:
微信
經過OAuth2.0驗證接口來獲取成員的身份信息session
注意,此URL的域名,必須徹底匹配企業應用設置項中的'可信域名'(若是你的redirect_uri有端口號,那'可信域名'也必須加上端口號),不然跳轉時會提示redirect_uri參數錯誤。app
可信域名必須爲備案後的域名或二級域名(我就遇到此問題,提示 redirect_uri參數錯誤)curl
1.在微信公衆號應用裏綁定域名和連接 微信斷打開獲取微信用戶code參數函數
企業若是須要員工在跳轉到企業網頁時帶上員工的身份信息,需構造以下的連接:url
此爲未備案 的域名
FOCUS:
員工點擊後,頁面將跳轉至 redirect_uri/?code=CODE&state=STATE,企業可根據code參數得到員工的userid。
js可經過url獲取code參數
function getParameterByName(name){ var values = decodeURIComponent((location.search.match(RegExp("[?|&]" + name + '=([^\&]+)'))||[,null])[1]); return values == "" || values == "null" ? "" : values; }; 傳入參數 name='code'
2.根據code獲取訪問成員信息
請求說明
Https請求方式:GET
https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
3.獲取微信企業應用參數信息,獲得應用的人員信息
接口說明
該API用於獲取企業號某個應用的基本信息,包括頭像、暱稱、賬號類型、認證類型、可見範圍等信息
請求說明
Https請求方式: GET
https://qyapi.weixin.qq.com/cgi-bin/agent/get?access_token=ACCESS_TOKEN&agentid=AGENTID
4.根據2得到的 微信用戶信息與3獲得的企業人員用戶進行 匹配判斷 分配權限
5.經過HTML5,把員工信息保留session 對每一個頁面進行權限判斷
sessionStorage.setItem("access",datas.code); sessionStorage.getItem("access") == null
PS: AccessToken
AccessToken是企業號的全局惟一票據,調用接口時需攜帶AccessToken。
AccessToken須要用CorpID和Secret來換取,正常狀況下AccessToken有效期爲7200秒,有效期內重複獲取返回相同結果,並自動續期。
因爲獲取access_token的api調用次數很是有限,建議應用存儲與更新access_token,頻繁刷新access_token會致使api調用受限,影響自身業務。
請求說明
Https請求方式: GET
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect
開發中遇到的問題:
1.code只能經過微信客戶端得到,需經過js從回調的url 截取 後alert(code)進行查看
2.後端php訪問微信接口
剛開始使用 file_get_contents方式 延時 訪問失敗 ,得不到數據
使用curl 函數 訪問https 成功
function getHTTPS($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $result = curl_exec($ch); curl_close($ch); return $result; }