300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > php使用qq登录api接口 QQ的账号登录及PHP api操作

php使用qq登录api接口 QQ的账号登录及PHP api操作

时间:2020-03-23 16:27:49

相关推荐

php使用qq登录api接口 QQ的账号登录及PHP api操作

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 '/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='/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='/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='/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='/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()";

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='/'; //分享页面网址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 ?>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。