【问题标题】:Google Script API + Oauth + Tumblr谷歌脚本 API + Oauth + Tumblr
【发布时间】:2013-05-28 18:58:33
【问题描述】:

你好,

我正在尝试使用 Tumblr 提供的 Oauth api 访问 Tumblr,执行帖子)http://tumblr.com/api)。我正在使用 Google 脚本,我尝试了太多的解决方案,但有人工作。为了实现,我将自己置于这个(https://developers.google.com/apps-script/articles/twitter_tutorial)谷歌脚本 twitter 教程中,曾经在 Tumblr API 网页上,他们说 twitter api 与 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":{"status":400,"msg":"Bad Request"},"response":{"errors":["Post 不能为空."]}}

可能的解决方案

一个可能的解决方案可以使用此信息(从 tumblr.com/api 获得): 身份验证 该 API 支持 OAuth 1.0a 协议,通过 Authorization 标头接受参数,仅使用 HMAC-SHA1 签名方法。您的平台可能已经有一个 OAuth 客户端库。

我的问题是,我做错了什么?(我的帖子是空的,我有 2 个参数)。有没有人有同样的问题?有人有建议吗?

谢谢。

【问题讨论】:

    标签: oauth google-apps-script tumblr


    【解决方案1】:

    我对tumblr api一无所知,但是你的http帖子是空的(oAuth参数不在帖子正文中,它们是高级选项),帖子正文需要放在“有效载荷”参数。请参阅“高级参数”部分in the docs。或者,由于您不使用帖子,您不能使用获取请求吗?删除method: POST 参数(GET 是默认值)。

    【讨论】:

      【解决方案2】:

      非常感谢丹尼尔。它现在起作用了!!

      每个想要使用 Tumblr + Google Script API + oAuth 的人都可以使用下面的代码来发布帖子。

      我创建了我的 Google 电子表格,然后在那里创建了一个脚本。在能够发帖之前,我需要创建并应用到 tumblr.com/api 并获取密钥和消费者密钥。此外,在创建新版本之前,我已将 Google 脚本部署为 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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-31
        相关资源
        最近更新 更多