Twitter REST API –使用“ tweet_mode = extended”参数时出现“无法验证您”错误

画家约翰

当从https://api.twitter.com/1.1/statuses/user_timeline.json检索数据时,我在使用Twitter REST API和cURL时遇到了小问题

我在下面进行了以下设置,这些设置可以正常运行,但是一旦我尝试获取扩展的tweet(tweet_mode = extended),但用其替换URLhttps://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended就会出错并提示Could not authenticate you.,如果我删除该参数,?tweet_mode=extended它将再次正常运行。

var $oauthConsumerKey = "XXX"; // Consumer key
var $oauthConsumerKeySecret = "XXX"; // Consumer key secret
var $oauthToken = "XXX"; // Token
var $oauthTokenSecret = "XXX"; // Token secret

$oauthHash = '';
$oauthHash .= 'oauth_consumer_key=' . $this->oauthConsumerKey . '&';
$oauthHash .= 'oauth_nonce=' . time() . '&';
$oauthHash .= 'oauth_signature_method=HMAC-SHA1&';
$oauthHash .= 'oauth_timestamp=' . time() . '&';
$oauthHash .= 'oauth_token=' . $this->oauthToken . '&';
$oauthHash .= 'oauth_version=1.0';

$base = '';
$base .= 'GET';
$base .= '&';
$base .= rawurlencode('https://api.twitter.com/1.1/statuses/user_timeline.json');
$base .= '&';
$base .= rawurlencode($oauthHash);

$key = '';
$key .= rawurlencode($this->oauthConsumerKeySecret);
$key .= '&';
$key .= rawurlencode($this->oauthTokenSecret);

$signature = base64_encode(hash_hmac('sha1', $base, $key, true));
$signature = rawurlencode($signature);

$oauthHeader = '';
$oauthHeader .= 'oauth_consumer_key="' . $this->oauthConsumerKey . '", ';
$oauthHeader .= 'oauth_nonce="' . time() . '", ';
$oauthHeader .= 'oauth_signature="' . $signature . '", ';
$oauthHeader .= 'oauth_signature_method="HMAC-SHA1", ';
$oauthHeader .= 'oauth_timestamp="' . time() . '", ';
$oauthHeader .= 'oauth_token="' . $this->oauthToken . '", ';
$oauthHeader .= 'oauth_version="1.0", ';
$curlHeader = array("Authorization: Oauth {$oauthHeader}", 'Expect:');


$curlRequest = curl_init();
curl_setopt($curlRequest, CURLOPT_HTTPHEADER, $curlHeader);
curl_setopt($curlRequest, CURLOPT_HEADER, false);
curl_setopt($curlRequest, CURLOPT_URL, 'https://api.twitter.com/1.1/statuses/user_timeline.json');
curl_setopt($curlRequest, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlRequest, CURLOPT_SSL_VERIFYPEER, false);
$this->twiiterJSON = curl_exec($curlRequest);
curl_close($curlRequest);

我在Postman中进行了设置,以进行检查,并在Postman中正常运行,因此我生成了一个PHP cURL代码段并对其进行了测试,而且似乎也可以正常运行,因此有人可以帮助我弄清楚我在做什么错吗?我认为这可能与签名有关,但没有参数似乎可以正常工作。

任何帮助/建议,将不胜感激。

塔伦·拉尔瓦尼(Tarun Lalwani)

与其找出问题所在,不如使用目前有效的方法。

<?php

$username   = REX_VALUE[1];
$key        = REX_VALUE[2];     // Consumer Key (API Key)
$secret     = REX_VALUE[3];     // Consumer Secret (API Secret)
$counter    = '0';              // Zähler, wieviele Tweets ausgegeben werden sollen

setlocale(LC_TIME, "de_DE.utf8");

$quest = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=" . urlencode($username) . "&tweet_mode=extended&include_rts=false&exclude_replies=true";
$tokenUrl = "https://api.twitter.com/oauth2/token";

$auth = base64_encode(urlencode($key) . ':' . urlencode($secret));

// BearerToken holen
$getToken = curl_init();
curl_setopt($getToken, CURLOPT_URL, $tokenUrl);
curl_setopt($getToken, CURLOPT_POST, 1);
curl_setopt($getToken, CURLOPT_HTTPHEADER, array('Authorization: Basic ' . $auth));
curl_setopt($getToken, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
curl_setopt($getToken, CURLOPT_RETURNTRANSFER, 1);

$token = json_decode(curl_exec($getToken));
$token = $token->access_token;
curl_close($getToken);

// Tweets holen
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $quest);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token));
$result = curl_exec($curl);
curl_close($curl);

$tweets = json_decode($result);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

tweepy:使用tweet_mode ='extended'时被截断的tweet

您如何使用Twitter Rest API

使用 Twitter API 访问 Tweet 的 JSON 属性

无法使用Fabrication gem从Twitter gem制作Twitter :: Tweet

使用Twitter Streaming API和Twitter Rest API获取用户数据

如何使用curl访问Twitter REST API v1.1?

Swift Twitter搜索API无法验证您的响应,错误

使用Twitter API时在Heroku上出错

如何使用 Twitter API?

使用php的Twitter API

无法使用Twitter V1.1 API验证用户

无法使用tweet4j REST API获取Raw Json格式的Tweets

使用 REST API 检索值时出现 Promise {<Pending>} 错误

使用vsts Rest API时出现203错误

使用Twitter API搜索推文时出现“无法将stdClass类型的对象用作数组”错误

Twitter Tweet使用“ Codebird”删除

使用Twitter API发布图像时缺少或无效的url参数

使用 DocuSign REST API 时出现 404

R - Twitter - OAuth - REST API - 用户无法通过身份验证

使用 onEdit() 时,Google Script 无法调用 Twitter API

使用POST时Woocommerce Rest API错误无法创建资源

使用多个Twitter帐户的Twitter API流?

twitter REST API是否会返回仅使用我的应用程序(如facebook)的用户朋友?

Twitter搜索API出现错误

无法使用RestTemplate使用Rest API

Twitter API 1.1无法对您进行身份验证2

通过twitter API获取所有tweet,而不仅仅是最近的tweet(使用twitter4j-Java)

使用Twitter错误注册。无法验证

使用Fabric和Twitter API客户端获取“已通过Twitter进行身份验证”