1

こんにちは、

Tumblrが提供するOauth APIを使用してTumblrにアクセスし、投稿を実行しようとしています) http://tumblr.com/api )。私はGoogle Scriptを使用しており、あまりにも多くのソリューションを試しましたが、誰もがうまくいきました。実装するために、私はこれ(https://developers.google.com/apps-script/articles/twitter_tutorial)GoogleスクリプトTwitterチュートリアルに自分自身を基礎付けました.Tumblr API Webページで、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":["投稿を空にすることはできません。"] }}

可能な解決策

この情報 (tumblr.com/api から取得) を使用して、可能な解決策を実行できます: OAuth API は OAuth 1.0a プロトコルをサポートし、Authorization ヘッダーを介してパラメーターを受け入れ、HMAC-SHA1 署名方式のみを使用します。お使いのプラットフォーム用の OAuth クライアント ライブラリが既に存在する可能性があります。

私の質問は、私は何を間違っているのですか?(私の投稿は空です、私は2つのパラメータを持っています)。誰かが同じ問題を抱えていましたか?誰か提案がありますか?

ありがとうございました。

4

2 に答える 2

1

tumblr api については何も知りませんが、あなたの http 投稿は空です (oAuth パラメーターは投稿本文にありません。高度なオプションです)。投稿の本文は「ペイロード」パラメーターに入れる必要があります. ドキュメントの「高度なパラメーター」セクションを参照してください。または、投稿を使用していないので、代わりに取得リクエストを使用できませんか? パラメーターを削除しmethod: POSTます (GET がデフォルトです)。

于 2013-05-29T16:53:59.343 に答える
1

ダニエル、どうもありがとう。それは今働いた!!

Tumblr + Google Script API + oAuth を使用したい人は誰でも、以下のコードを使用して投稿を実行できます。

Google スプレッドシートを作成し、そこでスクリプトを作成しました。投稿できるようになる前に、作成して tumblr.com/api にアプリを作成し、シークレット キーとコンシューマー キーを取得する必要がありました。また、新しいバージョンを作成する前に、GoogleスクリプトをWebアプリとして展開しました(バージョンが最後のもの(最終コード)であることを確認してください)。その後、tu publish > deploy as web app に移動します。

私が最初の質問に付けたその Twitter チュートリアルは、仕事を終わらせるために必要な唯一の道です。

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;
}
于 2013-05-29T20:40:07.917 に答える