所以我正在将Twitter API集成到应用程序中,并且我需要它能够发布图像,视频和GIF动画。
我正在使用php5.6和J7mbo / twitter-api-php软件包。
到目前为止,我的代码如下:
$file = fopen(realpath('../path/' . $row['path']), 'rb');
$size = fstat($file)['size'];
$mime_type = mime_content_type($row['path']);
var_dump($size);
var_dump($mime_type);
$upload_url = 'https://upload.twitter.com/1.1/media/upload.json';
$requestMethod = 'POST';
$postfields = array(
"command" => "INIT",
'media_type' => $mime_type,
// 'media_category' => 'tweet_video',
'total_bytes' => $size
);
$initResult = json_decode($twitter->buildOauth($upload_url, $requestMethod)
->setPostfields($postfields)
->performRequest());
$mediaId = $initResult->media_id_string;
$segmentId = 0;
while (!feof($file)) {
$chunk = fread($file, 100000);
echo strlen($chunk);
$postfields = array(
"command" => "APPEND",
"media_id" => $mediaId,
"segment_index" => $segmentId,
"media" => $chunk
);
//var_dump($chunk);
$appendResult = $twitter->buildOauth($upload_url, $requestMethod)
->setPostfields($postfields)
->performRequest();
echo('chunk: '. $segmentId);
var_dump($appendResult);
$segmentId++;
}
echo ('done uploading');
fclose($file);
$postfields = array(
"command" => "FINALIZE",
"media_id" => $mediaId
);
$finResult = $twitter->buildOauth($upload_url, $requestMethod)
->setPostfields($postfields)
->performRequest();
var_dump($finResult);
无论我的块大小如何,FINALIZE请求的结果始终为:
{"request":"\/1.1\/media\/upload.json","error":"Segments do not add up to provided total file size."}"
[最令人沮丧的事实是,在我的测试中,$ size为273872,无论我如何分割块,它们的总长度始终为100%,保证为273872。
这里到底发生了什么?我什至该如何调试呢?
INIT工作。附录返回“”,但根据Twitter的文档(https://developer.twitter.com/en/docs/media/upload-media/api-reference/post-media-upload-append)完全正确。不过,我不知道如何提取响应状态,所以我不确定。
PS:我很长一段时间都没有使用过任何社交网络api,请告诉我您想让我添加到这篇文章中的任何内容。]
编辑:我用卷发将其重制。我有完全一样的结果。我以为“也许正在处理中”,所以我做了2次测试:
{
["errors"]=>
array(1) {
[0]=>
array(2) {
["message"]=>
string(31) "Sorry, that page does not exist"
["code"]=>
int(34)
}
}
}
不知道我是否可以通过这个库得到它。明天会尝试。
所以我将Twitter API集成到应用程序中,并且我需要它能够发布图像,视频和动画gif。我正在使用php5.6和J7mbo / twitter-api-php软件包。到目前为止,我的代码为...
如果我上传视频,twurl也会出现同样的问题。 :-(