0

編集: Twitter は基本認証をサポートしなくなったため、この質問は不要になりました。他のサービスで AJAX を介して基本的な認証を行っている人に関係があるため、そのままにしておきました。


ユーザーが Twitter のステータスを更新できるように、その機能の一部として必要な JavaScript アプリを開発しています。アプリはモバイルで動作するように設計されているため、サインインするためにユーザーを Twitter サイトに誘導したくはありません。ユーザーは資格情報をアプリに渡すだけでよく、すべてのサインインは私が処理します。

だから私は安らかなAPIでBasic Authを使用しようとしています。私のコードは次のようになります:

function postTweet(input){
            $.ajax( {
                type: "POST",
                url: "http://twitter.com/statuses/update.json",
                data: {status: input},
                dataType: "json",
                error: function() { alert("Some error occured"); },
                success: function() { alert("Success!"); },
                beforeSend: function(request) { request.setRequestHeader("Authorization", "Basic BASE64OFMYCREDENTIALS");}
                } ) ;
        }

したがって、私が知る限り、これは XMLHttpRequest ヘッダーから認証を実行し、ステータスを送信する必要があります。

ただし、このコードを呼び出すたびに、Twitter から "401 Unauthorized" エラーが返されます。

以下は、firebug からの要求と応答のヘッダーです。

リクエスト:

OPTIONS /statuses/update.json HTTP/1.1
Host: twitter.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST
Access-Control-Request-Headers: authorization

応答:

HTTP/1.1 401 Unauthorized
Date: Sat, 13 Mar 2010 11:08:58 GMT
Server: hi
Status: 401 Unauthorized
WWW-Authenticate: Basic realm="Twitter API"
X-Runtime: 0.00204
Content-Type: application/json; charset=utf-8
Cache-Control: no-cache, max-age=300
Set-Cookie: guest_id=1268478538488; path=/
_twitter_sess=BAh7CDoPY3JlYXRlZF9hdGwrCPlyNlcnAToHaWQiJWUyN2YzYjc3OTk2NGQ3%250ANzJkYTA4MjYzOWJmYTQyYmUyIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVy%250AOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--d687808459872da0aa6a89cab35fd347300b4d07; domain=.twitter.com; path=/
Expires: Sat, 13 Mar 2010 11:13:58 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 88
Connection: close

これに関するどんな助けも大歓迎です、

ありがとう、

ジェルフォード

ps。明確でない場合に備えて、JQueryを使用していることに言及する必要があります。

4

1 に答える 1

0

アプリは最終的にクライアント側のみになる予定だったので (JIL モバイル プラットフォーム用に設計されました)、私は弾丸をかじって完全な OAuth を実行することにしました。 Firefox の Web ページ。

私が困惑しているのは、ブラウザーで POST が機能しないことはわかっていますが、HTTPRequest オブジェクトに Auth ヘッダーを設定し、GET 要求を作成してもすべてうまくいくと考えたことです。どうやらそうではありません。

アプリが期限を過ぎたので、ポイントはミュートになりました(完了しました:))が、基本認証ルートで機能しなかったことを誰かが知りたいと思うかもしれません。

于 2010-04-11T18:19:53.497 に答える