企业微信 获取当前用户信息

按我的理解说白了就是:

1 按微信指定的方式拼接出一个oauth url地址(

  • https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

redirect_uri:my url地址

scope:snsapi_base或snsapi_userinfo

snsapi_base:静默授权,可获取成员的基础信息;

snsapi_userinfo:静默授权,可获取成员的详细信息,但不包含手机、邮箱;

snsapi_privateinfo:手动授权,可获取成员的详细信息,包含手机、邮箱

 

2 访问oauth url这个地址,微信会做一些的验证之类的工作,最终如果没有问题,它会在my url 这个地址后面加上两个参数:code 和 state。

3 然后跳转到 类似于 my url ?code=xxxxxxxx&state=STATE 这个我们的地址上来了。

4 我们拿到code值之后,使用(https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE)可以得到 UserId和user_ticket

5 我们拿到user_ticket值之后,使用(https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail?access_token=ACCESS_TOKEN)+USER_TICKET

可以得到用户详细信息

 

具体可以看两个地方的文档

 

https://work.weixin.qq.com/api/doc#90000/90135/91020

https://qydev.weixin.qq.com/wiki/index.php?title=首页

 

 

 

1 构造网页授权链接

 

以下是微信官方文档内容:

如果企业需要在打开的网页里面携带用户的身份信息,第一步需要构造如下的链接来获取code参数:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

参数说明:

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

员工点击后,页面将跳转至 redirect_uri?code=CODE&state=STATE,企业可根据code参数获得员工的userid。code长度最大为512字节。

示例:

复制代码

假定当前
企业CorpID:wxdd725338566d6ffe
访问链接:http://api.3dept.com/cgi-bin/query?action=get
根据URL规范,将上述参数分别进行UrlEncode,得到拼接的OAuth2链接为:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxdd725338566d6ffe&redirect_uri=http%3a%2f%2fapi.3dept.com%2fcgi-bin%2fquery%3faction%3dget&response_type=code&scope=snsapi_base&state=#wechat_redirect
员工点击后,页面将跳转至 
http://api.3dept.com/cgi-bin/query?action=get&code=eh3CZBgG333qs9EdaPbCAP1VaOrjuNkiAZHTWgaWsZQ&state=
企业可根据code参数调用获得员工的userid

复制代码

注意到,构造OAuth2链接中参数的redirect_uri是经过UrlEncode的

 

### 获取企业微信当前用户的 `userid` 为了实现从企业微信获取当前登录用户的 `userid`,通常采用 OAuth2.0 授权机制。此方法允许开发者通过特定 URL 链接(如自定义菜单或消息中心内的链接)引导用户访问授权页面,在完成授权过程后可获得该用户的唯一标识符即 `userid`。 #### 使用 PHP 实现获取 `userid` 的流程 首先需构建一个重定向至企业微信官方服务器用于请求权限的链接: ```php <?php $corpid = 'CorpID'; // 替换成自己的 CorpID $redirect_uri = urlencode('http://yourdomain.com/callback.php'); // 回调地址需要urlencode编处理 $state = uniqid(); // 设置 state 参数防止CSRF攻击并可用于传递额外信息 echo "<a href='https://open.weixin.qq.com/connect/oauth2/authorize?appid={$corpid}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_base&state={$state}#wechat_redirect'>点击这里</a>"; ?> ``` 当用户点击上述生成的链接后会被导向到企业微信平台进行身份验证。一旦同意授权,则会跳转回指定回调页,并附带临时票据 `code` 及之前设置的状态参数 `state`。 接着在回调脚本中利用得到的 `code` 向企业微信 API 发起 POST 请求交换永久凭证以及目标 `userid`: ```php <?php // callback.php 文件内容如下 if (isset($_GET['code'])) { $code = $_GET['code']; $url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={ACCESS_TOKEN}&code={$code}"; function get_access_token(){ global $corpid,$corpsecret; $token_url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$corpid}&corpsecret={$corpsecret}"; $res = json_decode(file_get_contents($token_url),true); return $res["access_token"]; } $access_token=get_access_token(); $result=json_decode(file_get_contents($url)); echo "User ID is:".$result->UserId; // 输出 userid } ?> ``` 注意:以上代片段中的 `{ACCESS_TOKEN}` 应替换为企业实际有效的 access token 或者动态获取最新有效令牌后再拼接到请求路径里[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值