你好,
我正在尝试使用Tumblr ( http://tumblr.com/api)提供的Oauth访问、执行一篇文章。我正在使用Google脚本,我尝试了太多的解决方案,但是没有人工作过。为了实现这个目标,我已经开始学习这个(教程) Google twitter教程,他们在tumblr的网页上说twitter和Tumblr几乎一样。
语境化,
我已经用下面的数据设置了Oauth类方法,并用从我创建的api中获得的值替换了使用者键和秘密键。
var oauthConfig = UrlFetchApp.addOAuthService("tumblr");
oauthConfig.setAccessTokenUrl(
"http://www.tumblr.com/oauth/access_token");
oauthConfig.setRequestTokenUrl(
"http://www.tumblr.com/oauth/request_token");
oauthConfig.setAuthorizationUrl(
"http://www.tumblr.com/oauth/authorize");
oauthConfig.setConsumerKey(<i>consumerkey</i>);
oauthConfig.setConsumerSecret(<i>consumerSecret</i>);
错误,
下面的代码没有正常工作。
var requestData = {
"method": "POST",
"oAuthServiceName": "tumbler",
"oAuthUseToken": "always"
};
var result = UrlFetchApp.fetch(
"https://api.tumblr.com/v2/blog/{blog}.tumblr.com/post?type=text&body=word",
requestData);
Twitter上的脚本几乎是一样的,而且工作正常。我能表演推特。
var result = UrlFetchApp.fetch(
"https://api.twitter.com/1/statuses/update.json?status=" + tweet,
requestData);
服务器的响应
对返回的代码400的请求失败。服务器响应:{“meta”:{“状态”:400,“msg”:“坏请求”},“响应”:{“错误”:“Post不能为空”}。
可能的解决办法
一个可能的解决方案可以使用这些信息(从tumblr.com/ API获取):OAuth API支持OAuth 1.0a协议,通过授权头接受参数,只使用HMAC-SHA1 1签名方法。可能已经为您的平台提供了OAuth客户端库。
我的问题是,我做错了什么?(我的帖子是空的,我有两篇文章)。有人也有同样的问题吗?有人有建议吗?
谢谢。
发布于 2013-05-29 16:53:59
我对tumblr一无所知,但是您的http是空的( oAuth参数不在post正文中,它们是高级选项),post的主体需要放在“有效负载”参数中。请参阅“高级参数”一节在医生里。或者,既然你没有使用帖子,你就不能用get请求代替吗?删除method: POST
参数(GET是默认的)。
发布于 2013-05-29 20:40:07
非常感谢丹尼尔。现在起作用了!
所有想要使用Tumblr + Google API + oAuth的人都可以使用下面的de代码来执行帖子。
我创建了谷歌电子表格,然后在那里创建了一个脚本。在此之前,我可以在tumblr.com/api中发布创建和应用程序,并获得秘密密钥和用户密钥。此外,我还将Google脚本部署为一个web应用程序(确保该版本是之前的最后一个版本(最后代码)),以创建一个新版本。在此之后,您可以将tu发布>部署为web应用程序!
我在第一个问题上提出的推特教程是你完成工作所需要的唯一途径。
function authorize() {
var oauthConfig = UrlFetchApp.addOAuthService("tumblr");
oauthConfig.setAccessTokenUrl(
"http://www.tumblr.com/oauth/access_token");
oauthConfig.setRequestTokenUrl(
"http://www.tumblr.com/oauth/request_token");
oauthConfig.setAuthorizationUrl(
"http://www.tumblr.com/oauth/authorize");
oauthConfig.setConsumerKey(getConsumerKey());
oauthConfig.setConsumerSecret(getConsumerSecret());
var requestData = {
"oAuthServiceName": "tumblr",
"oAuthUseToken": "always"
};
var result = UrlFetchApp.fetch(
"http://api.tumblr.com/v2/blog/{your_blog}.tumblr.com/posts/queue",
requestData);
}
function doGet(e) {
var tweet = e.parameter.tumblr;
var app = UiApp.createApplication().setTitle("Approved");
var panel = app.createFlowPanel();
authorize();
var encodedTweet = encodeURIComponent(tweet);
var payload =
{
"body" : encodedTweet,
"type" : "text"
};
var requestData = {
"method" : "POST",
"oAuthServiceName": "tumblr",
"oAuthUseToken": "always",
"payload" : payload
};
try {
var result = UrlFetchApp.fetch(
"https://api.tumblr.com/v2/blog/{your_blog}.tumblr.com/post",
requestData);
panel.add(app.createLabel().setText("You have approved: \"" + tweet + "\""));
} catch (e) {
Logger.log(e);
panel.add(app.createLabel().setText(e));
}
app.add(panel);
return app;
}
https://stackoverflow.com/questions/16799429
复制相似问题