扣丁学堂PHP培训简述PHP调用微博接口实现微博登录的方法

2019-09-09 10:17:48 3743浏览

在平时项目开发过程中,除了注册本网站账号进行登录之外,还可以调用第三方接口进行登录网站。文篇文章扣丁学堂PHP培训小编以微博登录为例为大家分享一下PHP调用微博接口实现微博登录的方法。微博登录包括身份认证、用户关系以及内容传播。允许用户使用微博帐号登录访问第三方网站,分享内容,同步信息。


扣丁学堂PHP培训简述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}" rel="external nofollow" >点击这里进行微博登录</a>
</body>
</html>

想要了解更多关于PHP开发方面内容的小伙伴,请关注扣丁学堂PHP培训官网、微信等平台,扣丁学堂IT职业在线学习教育有专业的PHP讲师为您指导,此外扣丁学堂老师精心推出的PHP视频教程定能让你快速掌握PHP从入门到精通开发实战技能。扣丁学堂PHP技术交流群:374332265。


                          JavaEE/微服务/源码解析/分布式/企业级架构【VIP体验课】


     【关注微信公众号获取更多学习资料】        【扫码进入JavaEE/微服务VIP免费公开课】  



查看更多关于“php培训资讯”的相关文章>>


标签: PHP培训 PHP视频教程 PHP在线视频 PHP学习视频 Laravel框架

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号