当前位置:首页 > 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. { 
  2.  "access_token": "SlAV32hkKG", 
  3.  "remind_in": 3600, 
  4.  "expires_in": 3600  
  5. } 

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

话不多说,直接上代码:

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

应用公共文件common.php:

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

控制器处理代码Login.php:

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

模板代码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调用微博接口

分享到: