質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Unity

    4025questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • API

    1527questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

  • Twitter

    663questions

    Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

twitter api のエラーコードについて

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 822

下記のコードはリツイート用にLET'S TWEET IN UNITYのTwitter.csを自分なりに書き換えたものです。
PostRetweet - failed. 404 Not Found
{"errors":[{"message":"Sorry, that page does not exist","code":34}]}
このエラーが出た時はURLの取得ができていないことを示しているようなのですが、原因がわかりません。
よろしければお力をください。

private const string RetweetURL = "https://api.twitter.com/1.1/statuses/retweet/:id.json";

public static IEnumerator PostRetweet(string TweetId, string consumerKey, string consumerSecret, AccessTokenResponse response, PostRetweetCallback callback)
        {
            Dictionary<string, string> parameters = new Dictionary<string, string>();
            parameters.Add("id", TweetId);

            // Add data to the form to post.
            WWWForm form = new WWWForm();
            form.AddField("id", TweetId);

            // HTTP header
            Dictionary<string, string> headers = new Dictionary<string, string>();
            headers["Authorization"] = GetHeaderWithAccessToken("POST", RetweetURL, consumerKey, consumerSecret, response, parameters);

            WWW web = new WWW(RetweetURL, form.data, headers);
            yield return web;

            if (!string.IsNullOrEmpty(web.error))
            {
                Debug.Log(string.Format("PostRetweet - failed. {0}\n{1}", web.error, web.text));
                callback(false, web.error);
            }
            else
            {
                string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value;

                if (!string.IsNullOrEmpty(error))
                {
                    Debug.Log(string.Format("PostRetweet - failed. {0}", error));
                    callback(false, web.error);
                }
                else
                {
                    callback(true, web.text);
                }
            }

        }
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

今回に当てはまるか分かりませんが、UnityではないんですけどPHPでこういう記事を見つけました。

Figured out the issue:
Get piece needed to be:
$tweets = $connection->get("trends/place", [ "id" => 23424977 ]);
instead of:
$tweets = $connection->get("https://api.twitter.com/1.1/trends/place.json?id=".$id);

https://stackoverflow.com/questions/39352627/twitter-api-returning-error-34-404

今は、form.AddFieldでIDを渡していますが、上記のようにURLにパラメーターをくっつける感じだとどうですかね?使ったことないので予想でしかないですがよければお試しください。
あと、サーバーの設定によってパラメータの上限があるはずです。TweetIdがかなり長いようでしたら検証が必要だと思いますのでご注意ください。

Post, retrieve and engage with Tweets
https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-retweet-id

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/13 16:09

    回答ありがとうございます。
    取得したTweetIdが長すぎて処理しきれないということでしょうか?

    キャンセル

  • 2017/12/13 17:55 編集

    はい。そうです。あと、僕が勘違いしていた部分もあり伝え忘れていたのですが、 GetHeaderWithAccessTokenでPOSTしていますが、パラメーターを渡す場合はGETしないといけません。もちろんGetHeaderWithAccessTokenがGETに対応しているのが前提です。そもそもこのPOSTがサーバーへのPOSTという意味でない可能性もありますので間違っていたらすみません。

    あとこのTweetIdが人に見られてまずいものでしたらGETはやめたほうがいいので思い通りの動作になってもこの方法は使わない方がいいと思います。

    キャンセル

  • 2017/12/14 15:22

    GetHeaderWithAccessToken()ではパラメータを渡せています。
    TweetIdが長すぎるのかURLに反映されていないようなので、別方法でただ今検討しています。

    キャンセル

0

TweetIdが存在しないIDなのではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/13 16:05

    回答ありがとうございます。
    ホームタイムラインの取得はできており、ツイートをビジュアル的にGAME画面内に表示することが出来ています。そのツイートからIDを確認しているので存在しないということはないと思います。

    キャンセル

0

urlをうまく取得できていなかったようです。
UrlEncoder()を作成してみて
https://api.twitter.com/1.1/statuses/retweet/:id.json?id=(例)12345
のようにurlが取れるようになりました。
しかし今度は
PostTweet - failed. 401 Unauthorized
{"errors":[{"code":32,"message":"Could not authenticate you."}]}
このようなエラーが出てしまいました。
要するに認証ができていない状態のようです。APIを使って、Tweetはすることができるので認証時に
キーやアクセストークンが間違えているとは思えないのですが、何が問題なのでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    ツイートの投稿

    大学で卒業研究としてTwitterAPIを利用したアプリケーションを開発しています。 その過程で以下のようにツイート投稿のところで行き詰まりました。 同じようなコードでタイムラ

  • 解決済

    UnityのLet's Tweet in Unityを用いた画像ツイート

    Unityの無料Asset、Let's Twitter in Unityを用いTwitterクライアントを製作しています。 このアセットには画像ツイートメソッドは含まれていな

  • 解決済

    C#でwebページのリンクを取得したい

    <div id="not-logged-in"> <a class="register alternate-context" href="https://twitter.com/

  • 解決済

    PHP Parse error: syntax error, unexpected 'if' (T...

    前提・実現したいこと hardbotterというライブラリを用いてphpでtwitterで地域の名前をリプで送るとそこの天気予報を返信するbotを作っています。(下のソースコードは

  • 解決済

    TwitterKitでツイートできない

    iOS11からTwitterKitを使わないとツイートできなくなったので、インストールしました。 ツイートのためのウィンドウは表示されるのですが、ツイートボタンを押しても「ツイート

  • 解決済

    TwitterKitを用いたログインボタンの導入で、Value of optional type n...

    前提・実現したいこと 始めて1週間のプログラミング初心者です。至らない点多々あるかと思いますがよろしくお願いします。 目標としているアプリ開発に必要な機能をとりあえずの理解で構わな

  • 解決済

    ツイッターのボタンを1個増やしたい

    【質問を修正しました】 ●使用している機能 CHROMEブラウザ公式ツイッター https://twitter.com/ ●使用したい機能および目的 拡張機能からJAVAscr

  • 解決済

    PythonでTwitterのタイムラインを取得

    お世話になります。 PythonでTwitterのタイムラインを取得したいです。 しかし下記のようにtwitter.getが働きません。 タイムラインの取得方法を教えて

同じタグがついた質問を見る

  • Unity

    4025questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • API

    1527questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

  • Twitter

    663questions

    Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。