微信企业号:OAuth2.0微信授权验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信企业号:OAuth2.0微信授权验证相关的知识,希望对你有一定的参考价值。

企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0验证接口来获取成员的身份信息。使用步骤和方法如下:

 

1、先开发要使用微信授权认证的网页应用,这个网址必须在互联网上。


2、生成回调网址

企业如果需要员工在跳转到企业网页时带上员工的身份信息,需构造如下的链接:

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      

是      

微信终端使用此参数判断是否需要带上身份信息      

举例:因为要调用urlencode函数,所以先在php生成这个回调网址。


$url=‘https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx74e955420d317a6e&redirect_uri=‘.urlencode(‘http://1.xxxxweixin.applinzi.com/test/login.php‘).‘&response_type=code&scope=snsapi_base&state=1#wechat_redirect‘;

echo $url

  

结果如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx74e955420d317a6e&redirect_uri=http%3A%2F%2F1.xxxxweixin.applinzi.com%2Ftest%2Flogin.php&response_type=code&scope=snsapi_base&state=1#wechat_redirect

 

3、绑定菜单

先选择对应的【应用】,然后启用【回调模式】,选择自定义菜单的【设置】,然后设置菜单,事件类型选择【跳转到网页】,输入上面的网站。具体见下面的图片。


技术分享


技术分享


技术分享

4、获取code

员工点击该网页后,页面将跳转至 redirect_uri?code=CODE&state=STATE,如下:

http://1.xxxxweixin.applinzi.com/test/login.php?code=155dee2d7912739ed9ad43619138dfcf&state=1

 该网页可以以GET方式读取code的内容。State的内容用户自行处理。

  

5、通过code获取员工信息

  • 请求说明 :Https请求方式:GET

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

  • 参数说明

参数      

必须      

说明      

access_token      

是      

调用接口凭证      

code      

是      

通过成员授权获取到的code,每次成员授权带上的code将不一样,code只能使用一次,10分钟未被使用自动过期      

  • 返回结果

a)企业成员授权时返回示例如下:

{

   "UserId":"USERID",

   "DeviceId":"DEVICEID"

}

参数      

说明      

UserId      

成员UserID      

DeviceId      

手机设备号(由微信在安装时随机生成,删除重装会改变,升级不受影响,同一设备上不同的登录账号生成的deviceid也不同)      

b)非企业成员授权时返回示例如下:

{

   "OpenId":"OPENID",

   "DeviceId":"DEVICEID"

}

参数      

说明      

OpenId      

非企业成员的标识,对当前企业号唯一      

DeviceId      

手机设备号(由微信在安装时随机生成,删除重装会改变,升级不受影响)      

c)出错时返回示例如下:

{

   "errcode": "40029",

   "errmsg": "invalid code"

}

 

6、通过userid获取员工信息

  • 请求说明 :Https请求方式: GET

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

  • 参数说明

参数      

必须      

说明      

access_token

调用接口凭证

userid

成员UserID。对应管理端的帐号

  • 返回结果

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

 

参数      

说明      

errcode

返回码

errmsg

对返回码的文本描述内容

userid

成员UserID。对应管理端的帐号

name

成员名称

department

成员所属部门id列表

position

职位信息

mobile

手机号码

gender

性别。0表示未定义,1表示男性,2表示女性

email

邮箱

weixinid

微信号

avatar

头像url。注:如果要获取小图将url最后的"/0"改成"/64"即可

status

关注状态:       1=已关注,2=已禁用,4=未关注

extattr

扩展属性

 

7、示例代码PHP

<?php

$corpid="";
$corpsecret="";
 
$code = $_GET[‘code‘];
$accesstoken=get_access_token($corpid,$corpsecret);
if (!empty($code))
{
$user=getUserInfoByAuth($accesstoken,$code);
$userid=$user["UserId"];
$openid=$user["OpenId"];   
$deviceid=$user["DeviceId"];
   
if (!empty($userid))
{
   $userinfo=getUserInfo($accesstoken,$userid);
    $username= $userinfo["name"];
}
}

 function getUserInfoByAuth($accesstoken,$code)
{
   
     $url="https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=$accesstoken&code=$code";
      $content=curl_get($url);
      $ret= json_decode($content,true);
      return $ret;
}
 
 function getUserInfo($accesstoken,$userid)
{
   
      $url="https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=$accesstoken&userid=$userid";
      $content=curl_get($url);
      $ret= json_decode($content,true);
      return $ret;
}
 function curl_get($url)
{
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
   
    if(!curl_exec($ch))
    {
        error_log(curl_error($ch));
        $data="";
    }
    else
    {
        $data=curl_multi_getcontent($ch);
    }
   
    curl_close($ch);
    return $data;
}

 //获取access_token
 function get_access_token($corpid,$corpsecret)
 {
  $url="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid&corpsecret=$corpsecret";
  $ch=curl_init();
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
  curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  
   $output=curl_exec($ch);
  
  curl_close($ch);
  $jsoninfo = json_decode($output,true);

        return  $jsoninfo["access_token"];
 }  //end get_access_token


?>


其他文章请见西祠胡同讨论版:http://www.xici.net/b1261440/


本文出自 “11460531” 博客,请务必保留此出处http://11470531.blog.51cto.com/11460531/1911977

以上是关于微信企业号:OAuth2.0微信授权验证的主要内容,如果未能解决你的问题,请参考以下文章

微信企业号第三方应用开发[四]——用户登录应用

微信公众号开发---使用开源组件开发公众号OAuth2.0网页授权授权登录

Java微信公众平台开发之OAuth2.0网页授权

OAuth2.0微信网页授权登录

如何获取微信用户的Openid详解

微信OAuth2.0授权回调页面域名设置问题