加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php QQ第三方登陆SDK程序代码

发布时间:2022-02-15 12:23:55 所属栏目:PHP教程 来源:互联网
导读:自己重写的一个php QQ第三方登陆SDK程序代码,官方的不敢恭维了所以自己再写了一个,主要是考虑到QQ的PHP SDK写的真是太烂了,纯属是普及API知识,而不是到手就可以部署的类库,反正自己都写了一个了,就拿出来分享下. 什么也不多说,直接上代码,代码如下: ?php /
  自己重写的一个php QQ第三方登陆SDK程序代码,官方的不敢恭维了所以自己再写了一个,主要是考虑到QQ的PHP SDK写的真是太烂了,纯属是普及API知识,而不是到手就可以部署的类库,反正自己都写了一个了,就拿出来分享下.
 
  什么也不多说,直接上代码,代码如下:
 
  <?php
  
  /**
  
  * QQ开发平台 SDK
  
  * 作者:偶尔陶醉
  
  * blog: www.Cuoxin.com
  
  */  
  
  class Qq_sdk{  
  
  
  
  //配置APP参数
  
  private $app_id = 你的APP ID;  
  
  private $app_secret = ‘你的APP_secret’;  
  
  private $redirect = 你的回调地址;
  
  
  
  function __construct()  
  
  {  
  
  
  
  }  
  
  
  
  /**
  
  * [get_access_token 获取access_token]
  
  * @param [string] $code [登陆后返回的$_GET['code']]
  
  * @return [array] [expires_in 为有效时间 , access_token 为授权码 ; 失败返回 error , error_description ]
  
  */  
  
  function get_access_token($code)  
  
  {  
  
  //获取access_token
  
  $token_url = ‘https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&’
  
  . ‘client_id=’ . $this->app_id . ‘&redirect_uri=’ . urlencode($this->redirect)//回调地址
  
  . ‘&client_secret=’ . $this->app_secret . ‘&code=’ . $code;  
  
  $token = array();  
  
  //expires_in 为access_token 有效时间增量  
  
  parse_str($this->_curl_get_content($token_url), $token);  
  
  
  
  return $token;  
  
  }  
  
  
  
  /**
  
  * [get_open_id 获取用户唯一ID,openid]
  
  * @param [string] $token [授权码]
  
  * @return [array] [成功返回client_id 和 openid ;失败返回error 和 error_msg]
  
  */  
  
  function get_open_id($token)  
  
  {  
  
  $str = $this->_curl_get_content(‘https://graph.qq.com/oauth2.0/me?access_token=’ . $token);
  
  if (strpos($str, “callback”) !== false)  
  
  {  
  
  $lpos = strpos($str, “(“);  
  
  $rpos = strrpos($str, “)”);  
  
  $str = substr($str, $lpos + 1, $rpos – $lpos -1);  
  
  }  
  
  $user = json_decode($str, TRUE);  
  
  
  
  return $user;  
  
  }  
  
  
  
  /**
  
  * [get_user_info 获取用户信息]
  
  * @param [string] $token [授权码]
  
  * @param [string] $open_id [用户唯一ID]
  
  * @return [array] [ret:返回码,为0时成功。msg为错误信息,正确返回时为空。...params]
  
  */  
  
  function get_user_info($token, $open_id)  
  
  {  
  
  
  
  //组装URL
  
  $user_info_url = ‘https://graph.qq.com/user/get_use
  r_info?’
  
  . ‘access_token=’ . $token  
  
  . ‘&oauth_consumer_key=’ . $this->app_id  
  
  . ‘&openid=’ . $open_id  
  
  . ‘&format=json’;  
  
  
  
  $info = json_decode($this->_curl_get_content($user_info_url), TRUE);  
  
  
  
  return $info;  
  
  }  
  
  private function _curl_get_content($url)  
  
  {  
  
  $ch = curl_init();  
  
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  
  
  curl_setopt($ch, CURLOPT_URL, $url);  
  
  //设置超时时间为3s
  //开源代码Cuoxin.com
  curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3);  
  
  $result = curl_exec($ch);  
  
  curl_close($ch);  
  return $result;  
  }
  }
  /* end of Qq_sdk.php */  
  ?>
  使用方法:在你网站上放置超链接,地址为:https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=你的APP_ID&redirect_uri=你的回调地址.
 
  在回调地址上调用我上面这个qq_sdk即可.
 
  demo代码如下:
 
  if(emptyempty($_GET['code']))
  {
  exit(‘参数非法’);
  }  
  include(‘qq_sdk’);  
  
  $qq_sdk = new Qq_sdk();  
  
  $token = $qq_sdk->get_access_token($_GET['code']);  
  
  print_r($token);  
  $open_id = $qq_sdk->get_open_id($token['access_token']);  
  
  print_r($open_id);   
  
  $user_info = $qq_sdk->get_user_info($token['access_token'], $open_id['openid']);  
  
  print_r($user_info); 

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读