企业微信小程序--多企业关联同一个小程序

企业微信允许多个企业关联同一个小程序,但是开发者在开发过程中需要注意以下几点:

  • 小程序被关联到多个企业即会有多组[corpid, Secret],开发者可以使用任意一个企业的[corpid, Secret]获取access_token
  • 使用获取到的access_token和code参数调用jscode2session接口
  • 第二步调用会返回当前用户所在真实的corpid,如果与第一步所使用的corpid不一致,则使用真实的corpid重新进行一遍登录流程
  • 如果没有使用这种流程,调用企业微信通讯录相关的接口时,会报错 “not allow to cross corp”。

 

1.获取企业 access_token(corpid    是    企业ID,corpsecret    是    应用的凭证密钥)

请求URL:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET

{

"errcode":0,

"errmsg":"",

"access_token": "accesstoken000001",//获取到的凭证

"expires_in": 7200//凭证有效时长(秒)

}
2.通过临时登录凭证校验接code2Session,获取 session_key、用户userid以及用户所在企业微信的corpid等信息(access_token、code【开发者服务器使用临时登录凭证】、grant_type【此处固定为authorization_code】)
注意:access_token必须是与小程序关联的企业微信应用secret所获得
//正常返回的JSON数据包
{
      "corpid": "CORPID",//用户所属企业的corpid
      "userid": "USERID",//	用户在企业内的UserID,对应管理端的帐号,企业内唯一。注意:如果该企 
                         //业没有关联该小程序,则此处返回加密的userid
      "session_key": "kJtdi6RF+Dv67QkbLlPGjw==",//会话密钥
      "errcode": 0,
      "errmsg": "ok"
}
//错误时返回JSON数据包(示例为Code无效)
{
    "errcode": 40029,
    "errmsg": "invalid code"
}

注意:

  1. 企业微信的jscode2session请求url与微信的不同
  2. 企业微信的jscode2session返回的是userid,而微信返回的是openid
  3. 获取access_token时请使用企业的corpid参数,请勿使用小程序的appid
  4. 会话密钥 session_key 是对用户数据进行加密签名的密钥,为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。

总结:

       一个小程序可以关联多个企业微信,但是如果想正确的获取每个企业的信息需要:

      1.任意一个企业的[corpid, Secret]获取access_token

      2.通过临时登录凭证校验接口获取当前用户所在的企业corpid、用户Userid

      3.判断企业corpid是否与登录凭证校验接口用到的corpid一致,如果不一致重新进行登录验证及可。

每个企业的应用(例如:XX小程序)access_token是彼此独立的,所以一个小程序在不同企业使用时,服务商进行access_token缓存时需要区分企业(corpid)来进行缓存,企业微信可能会出于运营需要,提前使access_token失效,开发者应实现access_token失效时重新获取的逻辑。

 

 

 

 

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值