最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > 建站教程 > CMS教程 > ECShop教程 >

QQ的账号登录及PHP api操作

时间:2014-06-10 11:03来源: 作者: 点击:
QQ 的账号登录及 api 操作,使用 oauth 2.0 官方提供的 sdk 都太过庞大,这是我自己简化的,提供简单的账号登录、获取个人信息、发布分享等功能,如果需要其他功能可以根据官方的 api
(责任编辑:admin)

 

QQ的账号登录及api操作,使用oauth 2.0
官方提供的sdk都太过庞大,这是我自己简化的,提供简单的账号登录、获取个人信息、发布分享等功能,如果需要其他功能可以根据官方的api文档自行添加
[
文件] qq.php
001 appid=$appid;
011 $this->appkey=$appkey;
012 $this->access_token=$access_token;
013 }
014
015 function login_url($callback_url, $scope=''){
016 $params=array(
017 'client_id'=>$this->appid,
018 'redirect_uri'=>$callback_url,
019 'response_type'=>'code',
020 'scope'=>$scope
021 );
022 return 'https://graph.qq.com/oauth2.0/authorize?'.http_build_query($params);
023 }
024
025 function access_token($callback_url, $code){
026 $params=array(
027 'grant_type'=>'authorization_code',
028 'client_id'=>$this->appid,
029 'client_secret'=>$this->appkey,
030 'code'=>$code,
031 'state'=>'',
032 'redirect_uri'=>$callback_url
033 );
034 $url='https://graph.qq.com/oauth2.0/token?'.http_build_query($params);
035 $result_str=$this->http($url);
036 $json_r=array();
037 if($result_str!='')parse_str($result_str, $json_r);
038 return $json_r;
039 }
040
041 /**
042 function access_token_refresh($refresh_token){
043 }
044 **/
045
046 function get_openid(){
047 $params=array(
048 'access_token'=>$this->access_token
049 );
050 $url='https://graph.qq.com/oauth2.0/me?'.http_build_query($params);
051 $result_str=$this->http($url);
052 $json_r=array();
053 if($result_str!=''){
054 preg_match('/callback\(\s+(.*?)\s+\)/i', $result_str, $result_a);
055 $json_r=json_decode($result_a[1], true);
056 }
057 return $json_r;
058 }
059
060 function get_user_info($openid){
061 $params=array(
062 'openid'=>$openid
063 );
064 $url='https://graph.qq.com/user/get_user_info';
065 return $this->api($url, $params);
066 }
067
068 function add_share($openid, $title, $url, $site, $fromurl, $images='', $summary=''){
069 $params=array(
070 'openid'=>$openid,
071 'title'=>$title,
072 'url'=>$url,
073 'site'=>$site,
074 'fromurl'=>$fromurl,
075 'images'=>$images,
076 'summary'=>$summary
077 );
078 $url='https://graph.qq.com/share/add_share';
079 return $this->api($url, $params, 'POST');
080 }
081
082 function api($url, $params, $method='GET'){
083 $params['access_token']=$this->access_token;
084 $params['oauth_consumer_key']=$this->appid;
085 $params['format']='json';
086 if($method=='GET'){
087 $result_str=$this->http($url.'?'.http_build_query($params));
088 }else{
089 $result_str=$this->http($url, http_build_query($params), 'POST');
090 }
091 $result=array();
092 if($result_str!='')$result=json_decode($result_str, true);
093 return $result;
094 }
095
096 function http($url, $postfields='', $method='GET', $headers=array()){
097 $ci=curl_init();
098 curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE);
099 curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);
100 curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
101 curl_setopt($ci, CURLOPT_TIMEOUT, 30);
102 if($method=='POST'){
103 curl_setopt($ci, CURLOPT_POST, TRUE);
104 if($postfields!='')curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
105 }
106 $headers[]="User-Agent: qqPHP(piscdong.com)";
107 curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
108 curl_setopt($ci, CURLOPT_URL, $url);
109 $response=curl_exec($ci);
110 curl_close($ci);
111 return $response;
112 }
113 }
[
文件] config.php
1
[
文件] index.php
01 get_openid();
12 $openid=$qq_oid['openid']; //
获取登录用户open id
13
14 //
获取登录用户信息
15 $result=$qq->get_user_info($openid);
16 var_dump($result);
17
18 /**
19 //
发布分享
20 $title='
开源中国'; //分享页面标题
21 $url='http://www.oschina.net/'; //
分享页面网址
22 $site=''; //QQ
应用名称
23 $fromurl=''; //QQ
应用网址
24 $result=$qq->add_share($openid, $title, $url, $site, $fromurl);
25 var_dump($result);
26 **/
27
28 }else{
29 //
生成登录链接
30 $qq=new qqPHP($qq_k, $qq_s);
31 $login_url=$qq->login_url($callback_url, $scope);
32 echo '
';
33 }
34 ?>
[
文件] callback.php
01 access_token($callback_url, $_GET['code']);
10 }
11 if(isset($result['access_token']) && $result['access_token']!=''){
12 echo '
授权完成,请记录
access token

';
13
14 //
保存登录信息,此示例中使用session保存
15 $_SESSION['qq_t']=$result['access_token']; //access token
16 }else{
17 echo '
授权失败';
18 }
19 echo '
';
20 ?>

 

------分隔线----------------------------
栏目列表
推荐内容