0

2 日間の試行の後、私はまだチタン アプリケーションを twitter request_token api 1.1 でうまく再生できません。常に 401 の不正なエラーが発生します。私はブロックされているので、助けていただければ幸いです。

var httpClient = Ti.Network.createHTTPClient({
                onerror : function(e) {
                    alert(this.status + ":" + e.error);
                },
                onload : function(e) {
                    alert(this.responseText);
                    if (this.readyState == 4) {
                        var resposeText = this.responseText;
                    }

                }
            });
httpClient.open('POST', "https://api.twitter.com/oauth/request_token");
httpClient.setRequestHeader("content-type", "application/x-www-form-urlencoded; charset=UTF-8");

var now = new Date().getTime();

var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var nonce = "";
for (var i = 0; i < 10; ++i) {
    var rnum = Math.floor(Math.random() * chars.length);
    nonce += chars.substring(rnum, rnum + 1);
}
var parameters = "oauth_callback=" + Ti.Network.encodeURIComponent("http://apicallback.stc.com.sa");

var signature = "POST&" + Ti.Network.encodeURIComponent("https://api.twitter.com/oauth/request_token") + "&" + Ti.Network.encodeURIComponent(parameters);
var header = "OAuth oauth_callback=\"" + Ti.Network.encodeURIComponent("http://apicallback.stc.com.sa") + "\",oauth_consumer_key=\"wPdlchopdYaqHhab8H8jMA\",oauth_nonce=\"" + nonce + "\",oauth_signature=\"" + signature + "\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"" + now + "\",oauth_version=\"1.0\"";
httpClient.setRequestHeader("Authorization", header);
httpClient.send(parameters);
4

3 に答える 3

1

いくつかのエラーがありました:

  • あなたのナンスは正しく構築されていないようです。32文字の文字列を生成し、Base64でエンコードします。
  • 署名も正しく作成されていません。署名の作成については、Twitter開発者向けのドキュメントを参照してください。ここにあなたのエラーがあります:
    • すべてのOAuth引数が欠落していますが、oauth_callback。ヘッダーで使用されるOAuth引数はAuthorize、署名のパラメーターに含める必要があります
    • データに署名するためのキーを作成しません。
    • oauth_signature_methodデータに署名するために署名方法( ""に設定されている)を使用しないでHMAC-SHA1ください。
  • タイムスタンプが大きすぎます。これは、ミリ秒ではなく、Unixエポック時間からの秒数です。""を追加し/1000ます:

    var now = new Date().getTime() / 1000

より一般的には、リクエストの承認に関するTwitter開発者のドキュメントを参照してください:https ://dev.twitter.com/docs/auth/authorizing-request

于 2013-01-19T02:09:17.890 に答える
0

たまたま、Twitter のライブラリ一覧に JavaScript ライブラリが投稿されているのを見つけました。jsOAuthをチェックしてください。ライブラリのAPIドキュメントもあります:)。これで認証トークンを取得できるようになりましたが、https://api.twitter.com/1.1/search/tweets.jsonに投稿して検索を実行すると、401 (未認証) エラーが発生します。今、私は再び立ち往生しています。何が問題なのか考えてみてください...

于 2013-01-15T14:56:59.743 に答える
0

すでに機能している appcelerator 用の Twitter ライブラリが複数あります。そのうちの 1 つから始めることをお勧めします。

http://www.clearlyinnovative.com/blog/post/33810421717/titanium-appcelerator-quickie-posting-images-to-twitter-with-social_plus-js

投稿の下部にある github リポジトリへのリンクを参照してください

于 2013-01-20T15:17:11.943 に答える