【第三方登录】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 剩下就是存入自己的数据和登录逻辑
       
    }
相关推荐
CRMEB-嘉嘉3 小时前
CRMEB私域会员电商系统pro-用户等级
php
苏琢玉4 小时前
一次受限环境下的 MySQL 数据导出与“可交付化”实践
mysql·php
#Tan-shu#API5 小时前
PHP调用手机归属地查询API的实现方法
智能手机·php·api接口·手机归属地查询·三网手机号码归属地查询
catchadmin5 小时前
PHP True Async 最近进展以及背后的争议
开发语言·php
小韩博5 小时前
小迪笔记45课之-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件
笔记·sql·网络安全·php
wniuniu_8 小时前
ceph心跳机制
开发语言·ceph·php
小韩博10 小时前
PHP-MySQL 数据请求与 SQL 注入多样性(小迪 43 课笔记整理)
sql·mysql·php
中年程序员一枚11 小时前
php实现调用ldap服务器,实现轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)
服务器·开发语言·php
JHC00000011 小时前
推特(X)平台推文自动保存(支持保存所有推文相关数据到服务器)
运维·服务器·爬虫·python·dreamweaver
亚历山大海12 小时前
PHP发送outlook(微软)OAuth 2.0企业版邮箱验证码
开发语言·php·outlook