기사 디렉토리
관련 무료 학습 추천 :WeChat 미니 프로그램 개발 튜토리얼
Background
타사용 미니 프로그램 개발 본 미니 프로그램은 기업 위챗에서만 접속 가능하며, 일반 위챗으로는 접속이 불가능합니다. Enterprise WeChat에서 승인된 사용자만 이 미니 프로그램을 사용할 수 있습니다. 이러한 과정을 정리해야 하는 이유는 위챗에 있는 문서가 너무 산만하고 지저분하기 때문입니다. 이 과정을 정리하는 데도 오랜 시간이 걸렸습니다.문제 분석
우선 해결해야 할 몇 가지 문제가 있습니다. 1 기업 WeChat에서만 사용할 수 있으며 일반 미니 프로그램에서는 사용할 수 없습니다현재 운영 환경을 확인합니다.2. 승인된 사용자만 이 미니 프로그램을 사용할 수 있습니다
권한 확인 1: 일반 WeChat, 로그인 시 계정 + 비밀번호를 사용하고 검토용으로만 계정 권한을 제한할 수 있습니다 2: Enterprise WeChat, 회사 ID 확인, 사용자 ID 확인, yes 권한만 허용됩니다3. 검색 제어
미니 프로그램 관리 배경에서 "검색 허용 안 함"을 설정하세요4. 공유 제어를 닫습니다. 미니 프로그램에서
OK, 위의 작업을 수행하세요. 몇 가지 사항을 보면 Enterprise WeChat의 승인된 사용자만 Enterprise WeChat의
Workbench
에서 미니 프로그램을 볼 수 있다는 것을 알 수 있습니다.
처리 프로세스
工作台
看到该小程序。
处理流程
好,既然问题已经明确了,那我们就搞起。
对,没看错,先提交审核,因为只有审核通过的小程序才能被企业微信绑定。所以,先把小程序的基础功能做出来,可以限制一部分功能,总之,就是先让这个小程序上架。同时,在小程序的管理后台设置「不允许被搜索」,避免不必要的麻烦。
进入企业微信后台 -> 应用管理 -> 小程序 -> 关联小程序,然后使用小程序管理员的微信扫码,按照指引操作即可。
上一步的小程序页面会出现刚才关联的小程序,点击进入,然后就看到 secret 及可见范围。
这个 secret 相当于该小程序访问该企业微信数据的令牌,请妥善保存。
可见范围就是授权,哪些用户能看到这个小程序,被设置可见的人将会在自己企业微信的工作台看到该小程序。
好了,到重头戏了。
小程序需要判断当前的运行环境(普通微信 or 企业微信),需要判断使用当前小程序的用户是否有权限使用。
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); } } }); }})
后台需要调用以下几个接口来进行权限校验。
1、获取 access_token
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=xxxx&corpsecret=xxxx 请求方式:GET
这个接口和普通微信获取 token 的方法类似。
其中,corpid
在企业微信管理后台->我的企业->企业信息->企业ID;corpsecret
就是我们上一步关联小程序后获取的 secret。
返回内容如下:
{ "errcode": 0, "errmsg": "ok", "access_token": "xxxxxx", "expires_in": 7200}
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
;grant_type
固定传authorization_code
返回内容如下:
{ "userid": "bottle", "session_key": "xxxxx", "corpid": "xxxxxx", "deviceid": "xxxxxx", "errcode": 0, "errmsg": "ok"}
这里的corpid
可以用来初步校验当前用户是否有权限,因为无论哪个公司的人,只要他用企业微信,使用这个小程序,都会返回这样的结果,你需要根据corpid
是否是你授权的企业的ID来校验,如果不是,直接返回无权限就可以,不用进行下一步。
当然corpid
https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=xxx&userid=xxx 请求方式:GET
{ "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": []}
corpid
는 기업 WeChat 관리 배경->내 비즈니스->기업 정보->기업 ID
corpsecret
은 연결 후 얻은 것입니다. 이전 단계의 미니 프로그램에서 얻은 비밀입니다. 반환된 내용은 다음과 같습니다.
{ "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": []}
access_token
은 이전 단계에서 gettoken을 통해 가져옵니다. 실행 환경을 판단할 때
grant_type
은
authorization_code
반환되는 내용은 다음과 같습니다.rrreee 여기
corpid
는 현재 사용자에게 권한이 있는지 처음에 확인하는 데 사용할 수 있습니다. 누군가가 어떤 회사를 사용하든 Enterprise WeChat을 사용하고 이 애플릿을 사용하는 한 그러한 결과가 반환되기 때문입니다. .
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,后面根据有权限还是无权限,执行不同的操作就可以了,这里不再赘述。
相关免费学习推荐:微信小程序开发
위 내용은 엔터프라이즈 WeChat 애플릿 개발 프로세스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!