微信企业号 | 应用菜单认证配置

微信企业号是微信为企业客户提供的移动服务,旨在提供企业移动应用入口。它可以帮助企业建立员工、上下游供应链与企业IT 系统间的连接。利用企业号,企业或第三方服务商可以快速、低成本的实现高质量的企业移动轻应用,实现生产、管理、协作、运营的移动化。

公司微信申请企业号后就没怎么用过,只是作为管理员需要添加同事时需要扫下码验证,对于企业号的存在意义及使用场景没有切身体会,这才有了在实现项目需求过程中踩了些坑,整理下细节事项,避免后续再被绊倒。

菜单项在「应用中心」配置;通过「通讯录」管理哪些同事有权限看到菜单;用户查看菜单链接时微信通过「权限管理组」把认证的用户信息回调给开发者;这样就完成了查看菜单的权限在微信端搞定,跳转至菜单链接时传来微信的认证接力信息,菜单链接内的权限由开发者根据业务需求自行控制;下面的笔记就是来记录实现这段认证逻辑的中注意事项。

应用中心 - 权限管理组 - 通讯录

通讯录

微信企业号 - 通讯录

可以邀请关注,也可以直接新增成员;通讯录一定要录入,同时用户也要关注企业号,二者缺一不可。

强调的是一定要把手机号或邮箱录入,微信认证成功响应的用户信息就是这里配置的信息,业务权限上的关联只能通过手机号或邮箱(本项目中是使用邮箱)。

通讯录中的组织架构或标签对后续操作影响不大,人少时直接添加用户,人多时使用标签、组织快捷些。

菜单项

微信企业号 - 添加应用
微信企业号 - 添加应用 - 选择主页型应用
微信企业号 - 添加应用

「可见范围」是对企业号内查看菜单项的权限配置,应该细致些,否则同事有权限看到菜单但点击进入又提示无权限会引来电话询问的。

「主页URL」是核心,是通过呼叫微信的接口回调至自家项目的链接,注意事项如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
参数 必须 说明
appid 企业的CorpID
redirect_uri 授权后重定向的回调链接地址,
请使用urlencode对链接进行处理
response_type 返回类型,此时固定为:code
scope 应用授权作用域,此时固定为:snsapi_base
state 重定向后会带上state参数,
企业可以填写a-zA-Z0-9的参数值,
长度不可超过128个字节
#wechat_redirect 微信终端使用此参数判断是否需要带上身份信息

具体配置可参考文档:企业号开发者中心 - OAuth2.0验证接口说明

企业的 CorpID 可以在「设置」「企业号信息」模块下看到;不要把测试环境(自家企业号)的主页URL 拷贝至客户就行了,切记一定要修改 CorpID 为客户企业号的

「可信域名」就是回调函数中传参数的链接域名或 ip。

权限管理组

若上述配置成功,在从微信菜单项跳转至自家链接时,微信会给点击访问菜单的用户临时分配一串值,通过 code 参数追加在菜单链接后面,微信认证的流程开始了。

获取 access_token

get https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect

reponse
{
   "access_token": "accesstoken000001",
   "expires_in": 7200
}
参数 必须 说明
corpid 企业Id
corpsecret 管理组的凭证密钥

具体配置可参考文档:企业号开发者中心 - 获取AccessToken

corpid 是企业号的属性,很容易获取, corpsecret 是哪来的,答案是来自权限管理组。

微信企业号 - 添加应用 - 权限管理

如果对「权限管理组」不了解,不要擅自对已创建的管理组修改,建议新建管理组。

「应用权限」选择「应用中心」创建的菜单项,可多选。

「通讯录权限」此处选择的通讯录范围应该大于或等于「应用中心」中配置的「可见范围」,这样建议的前提是牢牢把关好「可见范围」。

「CorpID」企业号内所有出现的值都是一致的。

「Secret」对权限管理组是唯一分配的,并与「通讯录权限」紧密关联;「应用中心」「可见范围」大于「权限管理」「通讯录权限」的那部分用户就无法通过微信接口获取该用户的信息。

访问菜单项的用户信息

get https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE

response

// 企业成员授权时
{
   "UserId":"USERID",
   "DeviceId":"DEVICEID"
}

// 非企业成员授权时
{
   "OpenId":"OPENID",
   "DeviceId":"DEVICEID"
}

非企业号成员授权时,直接提示权限受限信息;企业号授权成员继续。

�get https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=USERID

response
{
   "errcode": 0,
   "errmsg": "ok",
   "userid": "zhangsan",
   "name": "李四",
   "department": [1, 2],
   "position": "后台工程师",
   "mobile": "15913215421",
   "gender": "1",
   "email": "zhangsan@gzdev.com",
   "weixinid": "lisifordev",  
   "avatar": "http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0",
   "status": 1,
   "extattr": {"attrs":[{"name":"爱好","value":"旅游"},{"name":"卡号","value":"1234567234"}]}
}

具体配置可参考文档:企业号开发者中心 - 获取成员

到此就获取到了访问者的邮箱,再到本地数据库中匹配,若未查询到或业务权限不足,继续提示更明细的权限受限原因;有权限,就可以看到该用户权限内的内容。

切换环境或企业号配置时,切记清除旧的 access_token 缓存,使用新的 corpid/secret 重新获取并更新缓存

琐碎细节

去除微信页面安全风险提示

企业号从名字就能看出来品牌很重要,通过自家企业号菜单访问的网页竟然提示什么安全风险,客户无论如何是接受不了的;当然在测试阶段就优化掉了,让客户少说话多点头,这样大家都轻松。

公众平台 - 公众号设置 - 功能设置 - 业务域名

企业号内无「业务域名」模块,很疑惑这样合理吗,公众号(订阅号)什么场景需要业务域名呢?

每个公众号只支持三个业务域名,若企业号项目很多时,建议由客户的公众号来配置此类操作,合理使用资源。

access_token

有效期两小时,有效期内响应的值不变;定时任务要尽量频率快,比较是否过期,而不是与微信接口多交互。

code 是临时的,但 UserID 是固定的,可以把用户的明细信息缓存下来,后续就少了一次微信接口交互,本地访问肯定更高效些;但要记得定时刷新用户信息,万一后台用户信息的联系方式有调整呢;高效性与及时性的平衡要权重好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,454评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,019评论 4 62
  • 猪叼走我种的花留下满心的牵挂去年今日的他呀早就浪迹天涯了 嘿,小花儿你可还想他他去了很远的地方不会回来啦和我一起不...
    十三笑阅读 428评论 0 1
  • 302天。一到节日,就会突然想要去给谁谁发个红包祝福一下。这种祝福大部分也都是发自内心的。同时一到节日,便开始不由...
    黑兔子Gary阅读 163评论 0 0
  • 1、不要背单词书 光是背单词的效果不大,容易忘记,而且有时候明明知道的单词,听的时候又不知道是哪了。很多人背单词都...
    小谢666阅读 237评论 0 1