javascript - 推特图片上传错误: media parameter is missing

标签 javascript node.js twitter

new twitter media upload api

First, use POST multipart/form-data or base64 encoded files to https://upload.twitter.com/1.1/media/upload.json.

但出现错误:代码 38“缺少媒体参数。”

这是我的代码

var Twitter = require('./twitter.js');
var request = require('request');
var fs = require('fs');
var path = require('path');
var FormData = require('form-data');
var utf8 = require('utf8');
var base64_encode = require('base64').encode;

var oauth = {
    consumer_key: '',
    consumer_secret: '',
    token: '',
    token_secret: ''
};

var form = new FormData();
fs.readFile(__dirname + '/image.jpg', function(err, data) {
    if (err) {
        throw err;
    }
    var encoded = base64_encode(data);
    form.append('media[]', encoded); // I've also tried media instead of media[]
    form.getLength(function(err, length) {
        var r = request.post({
            url: 'https://upload.twitter.com/1.1/media/upload.json',
            oauth: oauth,
        }, function(error, response, body) {
            if (error) {
                console.error(error);
                return;
            }
            console.dir(body);
        });
        r._form = form;
        r.setHeader('content-length', length);
    });
});

我重用了这个主题的代码:Upload images to twitter API from node.js

有什么建议吗? 谢谢

最佳答案

这是我用来上传媒体的东西:
(我只使用 OAuth 创建 Oauth 认证)
我还添加了/statuses/update.json 以将新帖子链接到您的媒体。

var oauth = require('oauth');
var fs = require('fs');

var a = new oauth.OAuth("https://twitter.com/oauth/request_token",
    "https://twitter.com/oauth/access_token",
    config.consumerKey,
    config.consumerSecret,
    "1.0",
    config.callbackUrl,
    "HMAC-SHA1");

a.post("https://upload.twitter.com/1.1/media/upload.json", oauth_access_token, oauth_access_token_secret, {media:fs.readFileSync(file_path).toString("base64")} ,"" , function (e, data, res){
    if (e) {
        console.error(e);
    }else {
        try{
            data = JSON.parse(data);
        }catch (e){
            console.error("Error Json : " + e);
        }
        console.log(data.media_id);

        a.post("https://api.twitter.com/1.1/statuses/update.json", oauth_access_token, oauth_access_token_secret, {status:message,media_ids:[data.media_id_string]}, "", function (e, data, res){
            if (e) {
                console.error(e);
            }else {
                console.log("Success");
            }
        });
    }
});

玩得开心

关于javascript - 推特图片上传错误: media parameter is missing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26340704/

相关文章:

javascript - 如何使用knockout js在引导模式中获取选定的行

node.js - Google 日历 API : Domain Global, 未找到错误

node.js - 在 Electron 中使用 Node.js 模块

iOS 发布 Twitter 媒体崩溃

javascript - 禁用在按 Tab 键切换到下一个元素时选择语义 UI 下拉选项

javascript - 如何知道溢出元素可见部分的长度?

javascript - jQuery:如果距顶部超过 150px 则执行

Mysql 时区与 React.js/Node.js

php - 将返回的 Twitter JSON 地理位置存储为变量

java - 我无法使用 twitter4j 库跟踪我自己的推文