【第三方登录】Twitter

创建应用

APPID 和 相关回调配置

重新设置api key 和 api secret

设置回调和网址 还有 APP的类型

拿到ClientID 和 Client Secret

源码实现

  • 获取Twitter 的登录地址
php 复制代码
public function twitterUrl()
{
     global $db,$request,$comId;
 
      require "inc/twitter_client/twitteroauth.php";    
      // Create TwitterOAuth obj instance
      $twitteroauth = new \TwitterOAuth('配置 API key', '配置 API Key Secret');
      // Requesting authentication tokens, the parameter is the URL we will be redirected to
      $redirectUrl = 'https://tocmodels.com/Twitter';
      $request_token = $twitteroauth->getRequestToken($redirectUrl);
      // save to mysql 记录token和token_secret
      $log = array(
          'oauth_token' => $request_token['oauth_token'],
          'oauth_token_secret' => $request_token['oauth_token_secret'],
          'status' => 0,
          'user_id' => 0,
          'screen_name' => '',
          'dtTime' => date("Y-m-d H:i:s")
      );
      
      $db->insert_update("twitter_token_log", $log, "id");
      
      // no error
      if($twitteroauth->http_code==200){
          	// Let's generate the URL and redirect
          	$loginUrl = $twitteroauth->getAuthorizeURL($request_token['oauth_token']);     
          
	        $return['code'] = 1;
	  		$return['message'] = '获取成功';
	  		$return['data'] = array();
	  		$return['data']['url'] = $loginUrl;
	  		
	  		return json_encode($return,JSON_UNESCAPED_UNICODE); 
      } else {
          // error
          return '{"code":0,"message":"Get Twitter login url fail!"}';
      }        
}
  • 回调跳转链接上有两个参数 oauth_verifieroauth_token,通过两个值获取用户标识
php 复制代码
	public function twitterLogin()
    {
        global $db,$request,$comId;
        
        require "inc/twitter_client/twitteroauth.php";        
        
        $oauth_verifier = $request['oauth_verifier'];
        if(empty($oauth_verifier)) return '{"code":0,"message":"oauth_verifier 为必传参数"}';  
        
        $oauth_token = $request['oauth_token'];
        if(empty($oauth_token)) return '{"code":0,"message":"oauth_token 为必传参数"}';  
                
        
        $log = $db->get_row("select * from twitter_token_log where oauth_token = '$oauth_token' and status = 0 ");
        if(!$log) return '{"code":0,"message":"无效的 oauth_token "}';  
    
        $oauth_token_secret = $log->oauth_token_secret;
        //api key  和 api key secret
        $twitteroauth = new \TwitterOAuth('配置 api key', 'api key secret ', $oauth_token, $oauth_token_secret);

        $access_token = $twitteroauth->getAccessToken($oauth_verifier);           
        
        $twitter_uid = $access_token['user_id'];//Twitter 的用户id
        $screen_name = $access_token['screen_name'];//Twitter 的用户 名称
    
        $user = $db->get_row("select * from users where twitter_uid = '$twitter_uid' ");
        //TODO 剩下就是存入自己的数据和登录逻辑
       
    }
相关推荐
吉吉611 小时前
在 Windows 和 Linux 的 VSCode 中配置 PHP Debug
开发语言·php
catchadmin2 小时前
PHP 8.5 闭包和一等可调用对象进入常量表达式
php
JaguarJack2 小时前
2026 年 PHP 函数式编程 优势与实际应用
后端·php·服务端
zorro_z2 小时前
ThinkPHP8学习篇(十五):验证
php
wr2005142 小时前
渗透笔记和疑惑
开发语言·php
Y_cheng_3 小时前
php环境配置与伪协议
开发语言·php
Shi_haoliu12 小时前
SolidTime 在 Rocky Linux 9.5 上的完整部署流程
linux·运维·nginx·postgresql·vue·php·laravel
成工小白18 小时前
网络复习(1)
服务器·网络·php
恃宠而骄的佩奇19 小时前
蚁剑 php一句话木马简单免杀(编码)绕过360,火绒
开发语言·web安全·php·免杀·一句话木马·火绒安全
m0_7381207220 小时前
渗透测试——y0usef靶机渗透提权详细过程(插件伪造请求头)
服务器·网络·web安全·ssh·php