企業(yè)微信與自建h5應(yīng)用和小程序?qū)?/p>
1.企業(yè)微信對(duì)接h5
? ? ? ?網(wǎng)頁授權(quán)登登陸鏈接
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&agentid=AGENTID&state=STATE#wechat_redirect
參數(shù)說明:
參數(shù)必須說明
appid是企業(yè)的CorpID
redirect_uri是授權(quán)后重定向的回調(diào)鏈接地址,請(qǐng)使用urlencode對(duì)鏈接進(jìn)行處理
response_type是返回類型,此時(shí)固定為:code
scope是應(yīng)用授權(quán)作用域。
snsapi_base
:靜默授權(quán),可獲取成員的的基礎(chǔ)信息(UserId與DeviceId);
snsapi_userinfo
:靜默授權(quán),可獲取成員的詳細(xì)信息,但不包含手機(jī)、郵箱;
snsapi_privateinfo
:手動(dòng)授權(quán),可獲取成員的詳細(xì)信息,包含手機(jī)、郵箱注意:企業(yè)自建應(yīng)用可以根據(jù)userid獲取成員詳情,無需使用snsapi_userinfo和snsapi_privateinfo兩種scope。更多說明見scope
agentid否企業(yè)應(yīng)用的id。當(dāng)scope是snsapi_userinfo或snsapi_privateinfo時(shí),該參數(shù)必填注意redirect_uri的域名必須與該應(yīng)用的可信域名一致。
state否重定向后會(huì)帶上state參數(shù),企業(yè)可以填寫a-zA-Z0-9的參數(shù)值,長(zhǎng)度不可超過128個(gè)字節(jié)
#wechat_redirect是終端使用此參數(shù)判斷是否需要帶上身份信息
員工點(diǎn)擊后,頁面將跳轉(zhuǎn)至redirect_uri?code=CODE&state=STATE,企業(yè)可根據(jù)code參數(shù)獲得員工的userid。code長(zhǎng)度最大為512字節(jié)。
獲取access_token
獲取access_token是調(diào)用企業(yè)微信API接口的第一步,相當(dāng)于創(chuàng)建了一個(gè)登陸憑證,其它的業(yè)務(wù)API接口,都需要依賴于access_token來鑒權(quán)調(diào)用者身份。因此開發(fā)者,在使用業(yè)務(wù)接口前,要明確access_token的頒發(fā)來源,使用正確的access_token。
請(qǐng)求方式:?GET(HTTPS)請(qǐng)求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRECT
注:此處標(biāo)注大寫的單詞ID和SECRET,為需要替換的變量,根據(jù)實(shí)際獲取值更新。其它接口也采用相同的標(biāo)注,不再說明。
參數(shù)說明:
參數(shù)必須說明
corpid是企業(yè)ID,獲取方式參考:術(shù)語說明-corpid
corpsecret是應(yīng)用的憑證密鑰,獲取方式參考:術(shù)語說明-secret
權(quán)限說明:每個(gè)應(yīng)用有獨(dú)立的secret,所以每個(gè)應(yīng)用的access_token應(yīng)該分開來獲取返回結(jié)果:
{
??????? "errcode": 0,
??????? "errmsg": "ok",
??????? "access_token": "accesstoken000001",
??????? "expires_in": 7200
}
參數(shù)說明:
參數(shù)說明
errcode出錯(cuò)返回碼,為0表示成功,非0表示調(diào)用失敗
errmsg返回碼提示語
access_token獲取到的憑證,最長(zhǎng)為512字節(jié)
expires_in憑證的有效時(shí)間(秒)
注意事項(xiàng):
a.
開發(fā)者需要緩存access_token,用于后續(xù)接口的調(diào)用(注意:不能頻繁調(diào)用gettoken接口,否則會(huì)受到頻率攔截)。當(dāng)access_token失效或過期時(shí),需要重新獲取。
b.
access_token的有效期通過返回的expires_in來傳達(dá),正常情況下為7200秒(2小時(shí)),有效期內(nèi)重復(fù)獲取返回相同結(jié)果,過期后獲取會(huì)返回新的access_token。由于企業(yè)微信每個(gè)應(yīng)用的access_token是彼此獨(dú)立的,所以進(jìn)行緩存時(shí)需要區(qū)分應(yīng)用來進(jìn)行存儲(chǔ)。
c.
access_token至少保留512字節(jié)的存儲(chǔ)空間。
d.
企業(yè)微信可能會(huì)出于運(yùn)營(yíng)需要,提前使access_token失效,開發(fā)者應(yīng)實(shí)現(xiàn)access_token失效時(shí)重新獲取的邏輯。
根據(jù)code獲取成員信息
請(qǐng)求方式:GET(HTTPS)請(qǐng)求地址:https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
參數(shù)說明:
參數(shù)必須說明
access_token是調(diào)用接口憑證
code是通過成員授權(quán)獲取到的code,最大為512字節(jié)。每次成員授權(quán)帶上的code將不一樣,code只能使用一次,5分鐘未被使用自動(dòng)過期。
權(quán)限說明:
跳轉(zhuǎn)的域名須完全匹配access_token對(duì)應(yīng)應(yīng)用的可信域名,否則會(huì)返回50001錯(cuò)誤。
2.企業(yè)微信對(duì)接自建小程序應(yīng)用(非第三方小程序)
調(diào)用接口 wx.qy.login() 獲取企業(yè)微信派發(fā)的臨時(shí)登錄憑證(code)
企業(yè)微信允許多個(gè)企業(yè)關(guān)聯(lián)同一個(gè)小程序,不過企業(yè)在開發(fā)過程中有需要特別注意的地方。
小程序在調(diào)用wx.qy.login之后,發(fā)送code到開發(fā)者服務(wù)器,開發(fā)者服務(wù)器使用code調(diào)用jscode2session接口,因?yàn)樵撔〕绦虮欢鄠€(gè)企業(yè)關(guān)聯(lián),此時(shí)并不知道是哪個(gè)企業(yè)的用戶在登錄。此時(shí),可使用任意一個(gè)企業(yè)中關(guān)聯(lián)本小程序的應(yīng)用的secret獲取access_token,先調(diào)用jscode2session獲得準(zhǔn)確的corpid,再據(jù)此corpid重新進(jìn)行一次登錄流程即可。