构造第三方应用授权链接
请求方式
GET
请求地址
参数说明
必须 |
||
是 |
||
是 |
||
是 |
||
是 |
应用授权作用域。 snsapi_base:静默授权,可获取成员的基础信息(UserId与DeviceId);
|
|
否 |
||
是 |
固定内容 |
企业员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,第三方应用可根据code参数获得企业员工的corpid与userid。code长度最大为512字节。
权限说明
使用snsapi_privateinfo的scope时,第三方应用必须有“成员敏感信息授权”的权限。
服务层业务代码
设置一个参数就是应用的SuiteId。这里的回调地址需要前端传递过来,因为是测试所以写一个固定的。返回一个网址需要在手机端企业微信中点击触发。
具体代码如下:
/**
* 构建企业微信授权链接
* @param $backUrl
*/
public function getCompanyWxOauth()
{
$backUrl = 'https://www.test.net/api/test';
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=三方应用suiteID&redirect_uri={$backUrl}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
echo "<a href='{$url}'>点击</a>";
}
开通调用许可
解决方式
【应用管理】->【购买接口许可】企业微信接口许可 【购买】
需要添加企业客户ID,也就是之前企业授权安装获取的corpid。
scope的特殊情况
当oauth2中appid=corpid时,scope为snsapi_userinfo或snsapi_privateinfo时,必须填agentid参数,否则系统会视为snsapi_base,不会返回敏感信息。
第三方服务商配置scope为snsapi_privateinfo时,agentid所对应的应用必须有“成员敏感信息授权”的权限。
“成员敏感信息授权”的开启方法为:登录服务商管理后台->标准应用服务->本地应用->进入应用->点击基本信息栏“编辑”按钮->勾选”成员敏感信息”。
获取访问用户身份
请求方式
GET
请求地址
参数说明
参数 |
必须 |
说明 |
是 |
||
是 |
通过成员授权获取到的code,最大为512字节。每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。 |
业务处理
通过上篇《企业微信获取第三方凭证》得到三方凭证也就是suite_access_token和授权链接得到的code,可用来获取访问用户身份信息。
具体代码如下:
/**
* 获取企业微信 suite_access_token
* @return array|mixed
*/
public function companyAccessToken()
{
$url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_suite_token";
$params = json([
'suite_id' => '三方应用的suitId',
'suite_secret' => '三方应用Secret',
'suite_ticket' => 'redis存储的回调解析得到的ticket'
]);
$info = $this->linkCurl($url, 'POST', $params);
$res = djson($info);
if (isset($res['errcode'])) {
return toFail('error', $res);
}
return toSuccess('success', [
'access_token' => $suite_access_token
]);
}
/**
* 获取企业微信用户信息
* @param $code
* @return array|mixed
*/
public function getWxUserInfo($code)
{
if (empty($code)) {
return toFail('请输入code参数!');
}
$get_access_token = $this->companyAccessToken();
if ($get_access_token['status'] != 1) {
return $get_access_token;
}
$access_token = $get_access_token['data']['access_token'];
$url = "https://qyapi.weixin.qq.com/cgi-bin/service/auth/getuserinfo3rd?suite_access_token={$access_token}&code={$code}";
$info = $this->linkCurl($url, 'GET');
print_r($info);die;
}
返回内容
{
"errcode":0,
"errmsg":"ok",
"corpid":"ww0d127fa51eaab",
"userid":"YuanLaiShiNi",
"parents":[],
"open_userid":"woxL4YTwAAvAGu3mLUy8dkchzW"
}
返回参数说明
参数 |
说明 |
errcode |
返回码 |
errmsg |
|
corpid |
用户所属企业的corpid |
用户在企业内的UserID,如果该企业与第三方应用没有授权关系时,返回密文UserId,有授权关系时,按照升级后的ID策略返回明文或密文 |
|
user_ticket |
成员票据,最大为512字节。 |
expires_in |
|
全局唯一。对于同一个服务商,不同应用获取到企业内同一个成员的open_userid是相同的,最多64个字节。仅第三方应用可获取 |
总结
本篇主要是在上一篇获取第三方凭证基础上,用户通过三方网站自定义授权登录后获取用户信息,以实现用户绑定登录功能。
原文地址:https://blog.csdn.net/json_ligege/article/details/134569670
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_15167.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!