首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google脚本API + Oauth + Tumblr

Google脚本API + Oauth + Tumblr
EN

Stack Overflow用户
提问于 2013-05-28 18:58:33
回答 2查看 1.2K关注 0票数 1

你好,

我正在尝试使用Tumblr ( http://tumblr.com/api)提供的Oauth访问、执行一篇文章。我正在使用Google脚本,我尝试了太多的解决方案,但是没有人工作过。为了实现这个目标,我已经开始学习这个(教程) Google twitter教程,他们在tumblr的网页上说twitter和Tumblr几乎一样。

语境化,

我已经用下面的数据设置了Oauth类方法,并用从我创建的api中获得的值替换了使用者键和秘密键。

代码语言:javascript
运行
复制
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>); 

错误,

下面的代码没有正常工作。

代码语言:javascript
运行
复制
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上的脚本几乎是一样的,而且工作正常。我能表演推特。

代码语言:javascript
运行
复制
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客户端库。

我的问题是,我做错了什么?(我的帖子是空的,我有两篇文章)。有人也有同样的问题吗?有人有建议吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-29 16:53:59

我对tumblr一无所知,但是您的http是空的( oAuth参数不在post正文中,它们是高级选项),post的主体需要放在“有效负载”参数中。请参阅“高级参数”一节在医生里。或者,既然你没有使用帖子,你就不能用get请求代替吗?删除method: POST参数(GET是默认的)。

票数 1
EN

Stack Overflow用户

发布于 2013-05-29 20:40:07

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

所有想要使用Tumblr + Google API + oAuth的人都可以使用下面的de代码来执行帖子。

我创建了谷歌电子表格,然后在那里创建了一个脚本。在此之前,我可以在tumblr.com/api中发布创建和应用程序,并获得秘密密钥和用户密钥。此外,我还将Google脚本部署为一个web应用程序(确保该版本是之前的最后一个版本(最后代码)),以创建一个新版本。在此之后,您可以将tu发布>部署为web应用程序!

我在第一个问题上提出的推特教程是你完成工作所需要的唯一途径。

代码语言:javascript
运行
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16799429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档