gpt4 book ai didi

javascript - 从 node.js 上传图像到 twitter API

转载 作者:可可西里 更新时间:2023-11-01 17:10:02 28 4
gpt4 key购买 nike

我正在尝试将图像发布到 twitter api v1.1我已经尝试了几乎所有的例子,但似乎没有什么可以发布的。包括 Posting images to twitter in Node.js using Oauth

我正在使用那里提到的 oauth 库,我也有 jsOauth,我想我会根据 https://gist.github.com/lukaszkorecki/1038408 试一试。

没有任何效果,在这一点上,我开始对自己是否能做到这一点失去希望。

 function postStatusWithMedia(status, file) {
var err = new Object();
if(fs.existsSync(file) === false) {
err.message = "File not found :(";
parseTwitterError(err);
} else {
var oauth = OAuth(options = {
"consumerKey": consumer_key,
"consumerSecret": consumer_secret,
"accessTokenKey": access_token,
"accessTokenSecret": access_token_secret
});

callbacks = {
onSuccess : function() {
console.log('upload worked!')
},
onFailure : function() {
console.log('upload failed!');
console.dir(arguments);
}
},

uploadData = {
'status' : status,
'media' : Base64.encode(fs.readFileSync(file))
};

oauth.post('https://api.twitter.com/1.1/statuses/update_with_media.json',uploadData, callbacks.onSuccess, callbacks.onFailure);

return false;
}
}

如果无法完成,能否解释一下原因?否则,任何可以引导我走向正确方向的东西都会很棒。

最佳答案

var fs = require('fs');
var request = require('request');
var FormData = require('form-data');
var utf8 = require('utf8');

// Encode in UTF-8
status = utf8.encode(status);

var form = new FormData();
form.append('status', status)
form.append('media[]', fs.createReadStream(file));

// Twitter OAuth
form.getLength(function(err, length){
if (err) {
return requestCallback(err);
}
var oauth = {
consumer_key: consumer_key,
consumer_secret: consumer_secret,
token: access_token,
token_secret: access_token_secret
};
var r = request.post({url:"https://api.twitter.com/1.1/statuses/update_with_media.json", oauth:oauth, host: "api.twitter.com", protocol: "https:"}, requestCallback);
r._form = form;
r.setHeader('content-length', length);
});

function requestCallback(err, res, body) {
if(err) {
throw err;
} else {
console.log("Tweet and Image uploaded successfully!");
}
}

我最终使用 requestnode-form-data 手动构造一个 multipart/form-data 请求并将其与状态请求一起发送,utf8 用于将状态编码为 UTF-8,不这样做会导致“<3”和其他字符出现问题。

关于javascript - 从 node.js 上传图像到 twitter API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670403/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com