我有一组 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 给我的不记名令牌时遇到了同样的问题。
提前致谢