使用 Twitter API 和 Guzzle 检索图像媒体

时间:2021-05-12 22:27:45

标签: php twitter twitter-oauth

我有一组 Twitter 媒体,其 URL 如下所示:

https://ton.twitter.com/1.1/ton/data/dm/XXXX/YYYY/ZZZZ.jpg

我想检索此网址后面的“真实”媒体。但是,我很挣扎,主要是因为 Twitter API 不断重定向我,即使我似乎发送了所需的内容。

在文档中,API 说您需要执行以下操作来检索媒体:

curl --request GET \

  --url https://ton.twitter.com/1.1/ton/data/dm/1034828552951160836/1034828533812486145/oP5p359h.jpg \

  --header 'authorization: OAuth 
    oauth_consumer_key="6NxxxxxxCS", 
    oauth_nonce="Sbxxxxxx2G", 
    oauth_signature="637xxxxxxM%3D", 
    oauth_signature_method="HMAC-SHA1", 
    oauth_timestamp="1535557741", 
    oauth_token="600-SQxxxxxxcqIF", 
    oauth_version="1.0"'

经过大量浏览后,我发现 this forum 在那里他们设法使请求工作而没有我所拥有的重定向。这也是我注意到我不能

所以我做了以下事情:

$client = new GuzzleHttp\Client\Client();

$authorization = '';
$auths = [
    'oauth_consumer_key' => env('TWITTER_API_KEY'),
    'oauth_nonce' => env('TWITTER_API_SECRET'),
    'oauth_signature' => env('TWITTER_ACCESS_TOKEN'),
    'oauth_timestamp' => now()->timestamp,
    'oauth_token' => env('TWITTER_SECRET_TOKEN'),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_version' => '1.0',
];

foreach ($auths as $key => $value) {
    $authorization .= $key . '="' . $value .'"';

    if (next($auths) !== false) $authorization .= ',';
}

// $authorization is now a string which looks like 'oauth_consumer_key="xxx",oauth_nonce="xxx" ', etc.

$response = $client->get('https://ton.twitter.com/1.1/ton/data/dm/1034828552951160836/1034828533812486145/oP5p359h.jpg', [
    'headers' => [
        'authorization' => 'OAuth ' . $authorization,
    ]
]);

dd($response->getBody()->getContents());

但是,在运行此代码时,出现以下错误:

<块引用>

GuzzleHttp\Exception\TooManyRedirectsException // 不会跟随超过 5 个重定向

我在 Postman 上碰碰运气,它在 50 次重定向后停止了,所以我不是在 2 次重定向之外。

我不知道我的代码有什么问题。

P.S:我在尝试使用 API 给我的不记名令牌时遇到了同样的问题。

提前致谢

0 个答案:

没有答案