谷歌脚本API+;Oauth+;Tumblr 你好

谷歌脚本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

我正在尝试使用Tumblr提供的Oauth api访问Tumblr,并执行post。我正在使用谷歌脚本,我尝试了太多的解决方案,但所有人都成功了。为了实现这一点,我将自己带入了这个()谷歌脚本twitter教程,在Tumblr API网页上,他们说twitter API与Tumblr几乎相同

语境化, 我已经用下面的数据设置了Oauth类方法,并用从我创建的api获得的值替换了consumer键和secret键

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;
}