钉钉上创建第三方企业应用,在扫码登陆获取token时候需要用到授权企业的corpId,那么扫码登陆时候这个corpId如何获取呀?
参考GPT和自己的思路:要获取扫码登录时所需要的授权企业的corpId,需要通过开发者后台中的应用详情页面查看。在企业内部管理端中,选择“H5微应用”或“PC端应用”,进入应用详情页面,可以看到“授权企业”的corpId。将该corpId复制到扫码登录时的相应位置即可完成扫码登录,获取token。
在创建钉钉第三方企业应用时,需要用到授权企业的corpId,但是在扫码登录获取token的过程中如何获取这个corpId呢?可以通过以下步骤实现:
下面是相应的代码实现:
为应用配置回调接口:
在钉钉后台为应用配置回调接口时,将接收事件回调的url地址设置为公网可以访问的url,具体操作可以参照钉钉的回调接口文档。
发起注册事件:
$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST, DingTalkConstant::$FORMAT_JSON); $req = new OapiCallBackRegisterCallBackRequest(); $req->setUrl("https://example.com/api/res/dingtalk/callback"); // 设置接收事件回调的url $req->setAesKey($this->ENCODING_AES_KEY); $req->setToken($this->TOKEN); $req->setCallBackTag(json_encode(['bpms_task_change','user_leave_org'])); // 需要注册的回调事件 $resp = $c->execute($req, $this->getToken(),"https://oapi.dingtalk.com/call_back/register_call_back"); exit();
接收钉钉回调事件:
在接收到钉钉回调事件时,首先需要通过钉钉提供的DingtalkCrypt类对回调消息进行解密,并从中获取corpId,具体代码如下:
// 解密回调消息 $result = $crypt->DecryptMsg($request_msg_sign, $request_timestamp, $request_nonce, $request_body, $corp_id); $body = json_decode($result, true);
// 获取corpId $corp_id = $body["CorpId"];
需要注意的是,这里的$corp_id即为授权企业的corpId,可以用来进行相应的操作。