文章目錄
#相關免費學習推薦:
微信小程式開發教程
背景
為其他公司開發一個小程序,這個小程序要只能在企業微信裡面訪問,不能透過普通微信訪問。
企業微信裡只有授權的使用者可以使用該小程式。 之所以要整理這樣一個流程,是因為微信那邊的文檔太分散了,亂七八糟的,我也是花了很長時間才把這個流程理順。問題分析
首先,這裡面需要解決幾個問題:1、只在企業微信裡使用,不能在普通小程序使用判斷目前執行環境
2、只有授權的使用者可以使用該小程式權限校驗#1:普通微信,使用帳號密碼登陸,審核專用,可限制帳號權限
2:企業微信,校驗企業id,校驗用戶id,有權限的才允許使用
3、控制搜尋
4、控制分享
#小程式裡面關閉分享OK,做到以上幾點,就實現了只有企業微信裡授權的用戶,才能夠在企業微信的
工作台好,既然問題已經明確了,那我們就搞起。
1、小程式基礎功能開發,提交審核
對,沒看錯,先提交審核,因為只有審核通過的小程式才能被企業微信綁定。所以,先把小程式的基礎功能做出來,可以限制一部分功能,總之,就是先讓這個小程式上架。同時,在小程式的管理後台設定「不允許被搜尋」,避免不必要的麻煩。
進入企業微信後台-> 應用管理-> 小程序-> 關聯小程序,然後使用小程序管理員的微信掃碼,按照指引操作即可。
上一步的小程式頁面會出現剛才關聯的小程序,點擊進入,然後就看到 secret 及可見範圍。
可見範圍就是授權,哪些使用者能看到這個小程序,被設定可見的人將會在自己企業微信的工作台看到該小程序。
4、修改小程式
好了,到重頭戲了。
4.1、判斷執行環境小程式需要判斷目前的運作環境(普通微信 or 企業微信),需要判斷使用目前小程式的使用者是否有權限使用。
<pre class="brush:php;toolbar:false">var isWxWork = false;wx.getSystemInfo({
success(res) {
console.log(res.environment);
isWxWork = res.environment == 'wxwork';
if (!isWxWork) {
// 当前环境不是企业微信,怎么处理你随便
return;
}
// 当前环境是企业微信,执行登陆,获取用户 code,用于后面的权限校验
wx.qy.login({
success: function (res) {
if (res.code) {
console.log(res.code);
// 这里可以将 res.code 通过请求发送给后台,让后台做权限校验
} else {
console.log('登录失败!' + res.errMsg);
}
}
});
}})</pre>
4.2、權限校驗
後台需要呼叫下列幾個介面來進行權限校驗。
1、取得 access_token
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=xxxx&corpsecret=xxxx 请求方式:GET
這個介面和普通微信取得 token 的方法類似。 其中,
corpid
在企業微信管理後台->我的企業->企業資訊->企業ID;corpsecret
就是我們上一步關聯小程式後所取得的secret。 返回內容如下:
<pre class="brush:php;toolbar:false">{
"errcode": 0,
"errmsg": "ok",
"access_token": "xxxxxx",
"expires_in": 7200}</pre>
2、取得userid
https://qyapi.weixin.qq.com/cgi-bin/miniprogram/jscode2session?access_token=xxx&js_code=xxx&grant_type=authorization_code 请求方式:GET
其中,
access_token 是我們前一步gettoken 取得到的;js_code
是前面判斷執行環境時所取得的res.code
;
固定傳authorization_code
回傳內容如下:
{ "userid": "bottle", "session_key": "xxxxx", "corpid": "xxxxxx", "deviceid": "xxxxxx", "errcode": 0, "errmsg": "ok"}###這裡的###corpid### 可以用來初步校驗當前用戶是否有權限,因為無論哪個公司的人,只要他用企業微信,使用這個小程序,都會返回這樣的結果,你需要根據###corpid### 是否是你授權的企業的ID來校驗,如果不是,直接回傳無權限就可以,不用進行下一步。 ######當然 ###corpid### 也可以用來處理一個小程式關聯多家公司的情況,不過這是另一個問題了。這裡簡單提一嘴,因為是給其他公司開發的小程序,所以我們這個小程序也關聯了兩個企業,一個我們公司,一個對方公司,這樣也方便我們測試,只需給我們自己的測試人員授權就可以讓他們使用完全相同的環境來測試了。 ######3、取得使用者資訊(判斷權限)###
https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=xxx&userid=xxx 请求方式:GET
其中,access_token
是我们前一步 gettoken 获取到的;userid
就是我们上一步获取到的 userid
。
返回内容如下:
{ "errcode": 0, "errmsg": "ok", "userid": "xxx", "name": "xxx", "department": [], "position": "", "mobile": "xxx", "gender": "2", "email": "", "avatar": "http://p.qlogo.cn/bizmail/xxx/0", "status": 1, "isleader": 0, "extattr": { "attrs": [] }, "telephone": "", "enable": 1, "hide_mobile": 0, "order": [], "qr_code": "https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=xxx", "alias": "", "is_leader_in_dept": []}
{ "errcode": 60011, "errmsg": "no privilege to access/modify contact/party/agent , hint: [1564556097_7_8d45297bd21be3702ff430560e1f0652], from ip: 118.113.1.217, more info at https://open.work.weixin.qq.com/devtool/query?e=60011", "department": [], "order": [], "is_leader_in_dept": []}
OK,后面根据有权限还是无权限,执行不同的操作就可以了,这里不再赘述。
相关免费学习推荐:微信小程序开发
以上是企業微信小程式開發流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!