当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP调用微博接口实现微博登录的方法示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-10-29 11:19:37 浏览: 评论:0 

这篇文章主要介绍了PHP调用微博接口实现微博登录的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在平时项目开发过程中,除了注册本网站账号进行登录之外,还可以调用第三方接口进行登录网站。这里以微博登录为例。微博登录包括身份认证、用户关系以及内容传播。允许用户使用微博帐号登录访问第三方网站,分享内容,同步信息。

1、首先需要引导需要授权的用户到如下地址:

https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE:

2、接下来要根据上面得到的code来换取Access Token:

https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE

返回值:

JSON

  1.  "access_token": "SlAV32hkKG", 
  2.  "remind_in": 3600, 
  3.  "expires_in": 3600  

3、最后,使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。

话不多说,直接上代码:

为了方便,我们先将get和post封装到application下的common.php中:

应用公共文件common.php:

  1. function get( $url$_header = NULL ) 
  2.   $curl = curl_init(); 
  3.   //curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false);  
  4.   ifstripos($url'https://') !==FALSE ) 
  5.   { 
  6.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
  7.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); 
  8.   } 
  9.  
  10.   curl_setopt($curl, CURLOPT_URL, $url); 
  11.   curl_setopt($curl, CURLOPT_HEADER, 0); 
  12.   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  13.   if ( $_header != NULL ) 
  14.   { 
  15.     curl_setopt($curl, CURLOPT_HTTPHEADER, $_header); 
  16.   } 
  17.   $ret  = curl_exec($curl); 
  18.   $info  = curl_getinfo($curl); 
  19.   curl_close($curl); 
  20.  
  21.   ifintval$info["http_code"] ) == 200 ) 
  22.   { 
  23.     return $ret
  24.   } 
  25.  
  26.   return false; 
  27. /* 
  28.  * post method 
  29.  */ 
  30. function post( $url$param ) 
  31.    $oCurl = curl_init (); 
  32.   curl_setopt ( $oCurl, CURLOPT_SAFE_UPLOAD, false); 
  33.   if (stripos ( $url"https://" ) !== FALSE) { 
  34.     curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYPEER, FALSE ); 
  35.     curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYHOST, false ); 
  36.   } 
  37.     
  38.   curl_setopt ( $oCurl, CURLOPT_URL, $url ); 
  39.   curl_setopt ( $oCurl, CURLOPT_RETURNTRANSFER, 1 ); 
  40.   curl_setopt ( $oCurl, CURLOPT_POST, true ); 
  41.   curl_setopt ( $oCurl, CURLOPT_POSTFIELDS, $param ); 
  42.   $sContent = curl_exec ( $oCurl ); 
  43.   $aStatus = curl_getinfo ( $oCurl ); 
  44.   curl_close ( $oCurl ); 
  45.   if (intval ( $aStatus ["http_code"] ) == 200) { 
  46.     return $sContent
  47.   } else { 
  48.     return false; 
  49.   } 

控制器处理代码Login.php:

  1. class Login extends \think\Controller  
  2.   public function index() 
  3.   { 
  4.     $key = "****"
  5.     $redirect_uri = "***微博应用安全域名***/?backurl=***项目本地域名***/home/login/webLogin?"
  6.     //授权后将页面重定向到本地项目 
  7.     $redirect_uri = urlencode($redirect_uri); 
  8.     $wb_url = "https://api.weibo.com/oauth2/authorize?client_id={$key}&response_type=code&redirect_uri={$redirect_uri}"
  9.     $this -> assign('wb_url',$wb_url); 
  10.     return view('login'); 
  11.   } 
  12.  
  13.  
  14.   public function webLogin(){ 
  15.     $key = "*****"
  16.     //接收code值 
  17.     $code = input('get.code'); 
  18.     //换取Access Token: post方式请求  替换参数: client_id, client_secret,redirect_uri, code 
  19.     $secret = "********"
  20.     $redirect_uri = "********"
  21.     $url = "https://api.weibo.com/oauth2/access_token?client_id={$key}&client_secret={$secret}&grant_type=authorization_code&redirect_uri={$redirect_uri}&code={$code}"
  22.     $token = post($urlarray()); 
  23.     $token = json_decode($token, true); 
  24.     //获取用户信息 : get方法,替换参数: access_token, uid 
  25.     $url = "https://api.weibo.com/2/users/show.json?access_token={$token['access_token']}&uid={$token['uid']}"
  26.     $info = get($url); 
  27.     if($info){ 
  28.       echo "<p>登录成功</p>"
  29.     } 
  30.   } 

模板代码login.html:

  1. <!DOCTYPE html> 
  2. <html lang="en"> 
  3. <head> 
  4.   <meta charset="UTF-8"> 
  5.   <title>微博登录</title> 
  6. </head> 
  7. <body> 
  8. <a href="{$wb_url}" rel="external nofollow" >点击这里进行微博登录</a> 
  9. </body> 
  10. </html>

Tags: PHP调用微博接口

分享到: