谷歌脚本API+;Oauth+;Tumblr 你好
我正在尝试使用Tumblr提供的Oauth api访问Tumblr,并执行post。我正在使用谷歌脚本,我尝试了太多的解决方案,但所有人都成功了。为了实现这一点,我将自己带入了这个()谷歌脚本twitter教程,在Tumblr API网页上,他们说twitter API与Tumblr几乎相同 语境化, 我已经用下面的数据设置了Oauth类方法,并用从我创建的api获得的值替换了consumer键和secret键谷歌脚本API+;Oauth+;Tumblr 你好,oauth,google-apps-script,tumblr,Oauth,Google Apps Script,Tumblr,我正在尝试使用Tumblr提供的Oauth api访问Tumblr,并执行post。我正在使用谷歌脚本,我尝试了太多的解决方案,但所有人都成功了。为了实现这一点,我将自己带入了这个()谷歌脚本twitter教程,在Tumblr API网页上,他们说twitter API与Tumblr几乎相同 语境化, 我已经用下面的数据设置了Oauth类方法,并用从我创建的api获得的值替换了consumer键和secret键 var oauthConfig = UrlFetchApp.addOAuthServ
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>);
Twitter的脚本几乎是一样的,而且很有效。我能发推特
var result = UrlFetchApp.fetch(
"https://api.twitter.com/1/statuses/update.json?status=" + tweet,
requestData);
来自服务器的响应
请求返回的代码400失败。服务器响应:{“meta”:{“status”:400,“msg”:“Bad Request”},“response”:{“errors”:[“Post不能为空”。]}
可能的解决方案
可能的解决方案可以使用以下信息(从tumblr.com/api获得):
非统组织
API支持OAuth 1.0a协议,通过授权头接受参数,仅使用HMAC-SHA1签名方法。您的平台可能已经有了OAuth客户端库
我的问题是,我做错了什么?(我的帖子是空的,我有两个参数)。有人有过同样的问题吗?有人有什么建议吗
谢谢。我对tumblr api一无所知,但是您的http post是空的(oAuth参数不在post正文中,它们是高级选项),post正文需要放在“payload”参数中。请参阅“高级参数”一节。或者,由于您没有使用post,您不能改用get请求吗?删除
方法:POST
参数(默认为GET)。非常感谢Daniel。现在成功了
每个想使用Tumblr+Google脚本API+oAuth的人都可以使用下面的de代码来执行POST
我创建了谷歌电子表格,然后在那里编写了一个脚本。在能够发布之前,我需要创建一个应用程序并将其发布到tumblr.com/api中,并获取机密和消费者密钥。此外,我还将Google脚本部署为web应用程序(确保该版本是创建新版本之前的最后一个版本(最终代码))。之后,您将进入发布>部署为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;
}
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;
}