编程学习网 > 数据库 > 用PHP调用微博接口实现微博登录,可参考学习下!
2019
08-22

用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

{  "access_token""SlAV32hkKG",  "remind_in"3600,  "expires_in"3600  }



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


为了方便,我们先将get和post封装到application下的common.php中:
应用公共文件common.php:

function get( $url, $_header = NULL ) {     $curl = curl_init();     //curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false);      if( stripos($url, 'https://') !==FALSE )     {         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);     }     curl_setopt($curl, CURLOPT_URL, $url);     curl_setopt($curl, CURLOPT_HEADER, 0);     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);     if ( $_header != NULL )     {         curl_setopt($curl, CURLOPT_HTTPHEADER, $_header);     }     $ret    = curl_exec($curl);     $info    = curl_getinfo($curl);     curl_close($curl);     if( intval( $info["http_code"] ) == 200 )     {         return $ret;     }     return false; } /*  * post method  */ function post( $url, $param ) {      $oCurl = curl_init ();     curl_setopt ( $oCurl, CURLOPT_SAFE_UPLOAD, false);     if (stripos ( $url, "https://" ) !== FALSE) {         curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYPEER, FALSE );         curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYHOST, false );     }     curl_setopt ( $oCurl, CURLOPT_URL, $url );     curl_setopt ( $oCurl, CURLOPT_RETURNTRANSFER, 1 );     curl_setopt ( $oCurl, CURLOPT_POST, true );     curl_setopt ( $oCurl, CURLOPT_POSTFIELDS, $param );     $sContent = curl_exec ( $oCurl );     $aStatus = curl_getinfo ( $oCurl );     curl_close ( $oCurl );     if (intval ( $aStatus ["http_code"] ) == 200) {         return $sContent;     } else {         return false;     } }


控制器处理代码Login.php:

class Login extends \think\Controller  {     public function index()     {         $key = "****";         $redirect_uri = "***微博应用安全域名***/?backurl=***项目本地域名***/home/login/webLogin?";         //授权后将页面重定向到本地项目         $redirect_uri = urlencode($redirect_uri);         $wb_url = "https://api.weibo.com/oauth2/authorize?client_id={$key}&response_type=code&redirect_uri={$redirect_uri}";         $this -> assign('wb_url',$wb_url);         return view('login');     }     public function webLogin(){         $key = "*****";         //接收code值         $code = input('get.code');         //换取Access Token: post方式请求    替换参数: client_id, client_secret,redirect_uri, code         $secret = "********";         $redirect_uri = "********";         $url = "https://api.weibo.com/oauth2/access_token?client_id={$key}&client_secret={$secret}&grant_type=authorization_code&redirect_uri={$redirect_uri}&code={$code}";         $token = post($url, array());         $token = json_decode($token, true);         //获取用户信息 : get方法,替换参数: access_token, uid         $url = "https://api.weibo.com/2/users/show.json?access_token={$token['access_token']}&uid={$token['uid']}";         $info = get($url);         if($info){             echo "<p>登录成功</p>";         }     } }


模板代码login.html:

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>微博登录</title> </head> <body> <a href="{$wb_url}">点击这里进行微博登录</a> </body> </html>


效果图:

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取