Javascript 使用Node.js将照片发布到Tumblr

Javascript 使用Node.js将照片发布到Tumblr,javascript,node.js,base64,tumblr,Javascript,Node.js,Base64,Tumblr,我正试图通过Node.js将画布生成的图像(如“data:image/png;base64,iVBORw0KGgoAAAANSUh…”)发布到Tumblr,但我确实有点困难 我在Tumblr上注册了我的应用程序,我有我的tumblrConsumerKey,我的TumblrConsumerCret,我设法让Oauth正常工作,并且毫无问题地发布了文本帖子。我的代码运行得很好,但当我试图发布一个图像时,一切都崩溃了 API文档说我可以使用data方法发布,并且图像应该是一个数组(URL编码的二进制内

我正试图通过Node.js将画布生成的图像(如“data:image/png;base64,iVBORw0KGgoAAAANSUh…”)发布到Tumblr,但我确实有点困难

我在Tumblr上注册了我的应用程序,我有我的tumblrConsumerKey,我的TumblrConsumerCret,我设法让Oauth正常工作,并且毫无问题地发布了文本帖子。我的代码运行得很好,但当我试图发布一个图像时,一切都崩溃了

API文档说我可以使用data方法发布,并且图像应该是一个数组(URL编码的二进制内容)。起初,我认为我的“data:image/png;base64…”可以正常工作,但事实并非如此。然后我尝试对它进行URI编码,然后对它进行URI编码并进行二进制转换。两者都不起作用。然后我找到了一个专门为Tumblr解决问题的人,但也没用。现在我真的被卡住了,我对如何转换我的图像使其工作没有任何想法

这里有人能帮我吗,或者给我指出正确的方向吗?这是我的密码:

var express=require('express');
var oauth=require('oauth');
var http=require('http');
var tumblr=require('tumblr.js');
var-app=express();
应用程序集('port',process.env.port | | 3000);
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.errorHandler());
/**
*使用tumblr.js需要这四个变量
*/
var tumblrConsumerKey=“mytumblrConsumerKey”,
tumblrConsumerSecret=“mytumblrConsumerSecret”,
tumblrOauthAccessToken=未定义,
tumblrOauthAccessTokenSecret=未定义,
//临时请求令牌
oauthRequestToken,
OAuthSecret;
/**
*此对象将用于OAuth
**/
var consumer=new oauth.oauth(
"http://www.tumblr.com/oauth/request_token",
"http://www.tumblr.com/oauth/access_token",
tumblrConsumerKey,
TumblrConsumerCret,
“1.0A”,
"http://localhost:3000/auth/callback",
“HMAC-SHA1”
);
app.get('/',函数(req,res){
如果(!tumblrOauthAccessToken | |!tumblrOauthAccessTokenSecret){
res.redirect('/auth/request');
}
res.send('您已登录并准备就绪');
});
app.get('/auth/request',函数(req,res){
consumer.getOAuthRequestToken(函数(错误,oauthToken,oauthTokenSecret){
如果(错误){
res.send(“获取OAuth请求令牌时出错:“+Error,500”);
}否则{
oauthRequestToken=oauthToken,
oauthRequestTokenSecret=oauthTokenSecret;
res.redirect(“http://www.tumblr.com/oauth/authorize?oauth_token=“+oauthRequestToken);
}
});
});
app.get('/auth/callback',函数(req,res){
consumer.getOAuthAccessToken(oauthRequestToken,oauthRequestTokenSecret,req.query.oauth_验证器,函数(错误,_oauthAccessToken,_oauthAccessTokenSecret){
如果(错误){
res.send(“获取OAuth访问令牌时出错:”+错误,500);
}否则{
tumblrOauthAccessToken=\u oauthAccessToken;
tumblrOauthAccessTokenSecret=\u oauthAccessTokenSecret;
res.send(“您已登录”);
}
});
});
app.get('/test',函数(req,res){
如果(!tumblrOauthAccessToken | |!tumblrOauthAccessTokenSecret){
res.redirect('/auth/request');
}
var client=tumblr.createClient({
消费者密钥:tumblrConsumerKey,
消费者的秘密:tumblrConsumerSecret,
令牌:tumblrOauthAccessToken,
令牌\u机密:tumblrOauthAccessTokenSecret
});
/**
*把你的东西贴在这里
**/
var img=“数据:image/png;base64,ivborw0kggoaaaansuheugaaaaaaafcayaacnblaaaaheleqvqi12p4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=”;
photo('myTumblrName',{source:img},函数(err,resp){
控制台日志(err);
});
});
http.createServer(app.listen(app.get('port')),函数(){
console.log('Express server监听端口'+app.get('port'));

});我很难理解这一点,而且TumblrAPI文档也很缺乏。“URL编码的二进制内容”非常模糊,老实说有点懒惰。