OAuth 2.0 . 第三方 登录 (新浪微博、腾讯QQ)

来源:互联网 发布:一周休三天 知乎 编辑:程序博客网 时间:2024/04/30 14:26

首先 去 QQ互联、新浪微博开放平台、 申请应用 成功:

注:在 申请应用时  会有<meta property="qc:admins" content="113133650471167627000636" /> 验证 把这段代码粘贴

到你的网站根目录默认访问的文件里的head头信息中。113133650471167627000636 为 应用序列号 每次申请应用和修改 地址等 都会发生变化 如果  不操作 这块代码 就不会检测成功 应用申请不会成功


新浪微博 也一样

然后 编写程序

1、腾讯QQ

index.html

[html] view plain copy print?
  1. <span style="font-size:18px;"><html>  
  2. <header>  
  3. <meta property="qc:admins" content="----序列号-----" />  
  4. </header>  
  5. <a href='https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=———你的APPID———&redirect_uri  
  6. =http://———你的网站域名———/index.php&state=test'><img src='qq.jpg'/> </a>  
  7. </html></span>  

index.php

[php] view plain copy print?
  1. //获取Authorization Code  
  2. $url ='https://graph.qq.com/oauth2.0/token?client_id=101213309'  
  3. .'&client_secret=9fbaba03a7ba86f7a08d064f4db5f11b'  
  4.  .'&redirect_uri=http://taotao.com133.com/index.php'  
  5.  .'&grant_type=authorization_code'  
  6.  .'&code='.$_REQUEST['code'];  
  7. //访问https://graph.qq.com/oauth2.0/token,传值APPID,APPKEY,并传值到Authorization Code  
  8.  $info = file_get_contents($url);//得到Access Token  
  9. //print_r($info);die;   
  10.       $params = array();  
  11.    parse_str($info$params);//把接收到的字符串转化为数组  
  12. //print_r($params['access_token']);die;   $params['access_token']为接收到的token值  
  13.     $url1='https://graph.qq.com/oauth2.0/me?access_token='.$params['access_token'];  
  14. $open=file_get_contents($url1);//访问https://graph.qq.com/oauth2.0/me?access_token  传值token  得到callback响应函数  
  15.     print_r($open);"<br/>";  
  16.     $str1 = substr($open,9,-3);//将得到的字符串截串为json格式数据  
  17.       
  18. //print_r($str1);die;  
  19.     $arr= json_decode($str1, true);//解析json数据,true设置可以使json数据以数组格式打印出  
  20.     print_r($arr['openid']);echo "<br/>";     //$arr['openid']为openid  
  21. //die;  
  22.     $url2="https://graph.qq.com/user/get_user_info?access_token=".$params['access_token']."&oauth_consumer_key=101213309&openid=".$arr['openid'];//访问https://graph.qq.com/user/get_user_info  传值token,APPID,openid  
  23. print_r($url2);    echo "<br/>";  
  24.     $data=file_get_contents($url2);//抓取用户信息数据  返回json格式数据  
  25.     //print_r($data);exit;  
  26.     $arrrrr= json_decode($data, true);  
  27.     print_r($arrrrr);die;   
2、新浪微博

[html] view plain copy print?
  1. <html xmlns:wb="http://open.weibo.com/wb">  
  2. <meta property="wb:webmaster" content="-----序列号-------" /></meta>  
  3. <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=------appkey------" type="text/javascript" charset="utf-8">  
  4. </script>  
  5. <script type="text/javascript">  
  6. <!--  
  7.     WB2.anyWhere(function (W) {  
  8.     W.widget.connectButton({  
  9.         id: "wb_connect_btn",  
  10.         type: '3,2',  
  11.         callback: {  
  12.             login: function (o) { //登录后的回调函数  
  13.              alert(o);//用户的信息  
  14.      
  15.             },  
  16.             logout: function () { //退出后的回调函数  
  17.                 alert('logout');  
  18.             }  
  19.         }  
  20.     });  
  21. });  
  22. //-->  
  23. </script>  
  24. <div id="wb_connect_btn"></div>  
  25.   
  26. </html> 
阅读全文
0 0