6

以前、Twitter でツイートを読むために jQuery を使用していました。

$.ajax('https://api.twitter.com/1/statuses/user_timeline.json', {
    crossDomain: true,
    data: {
        screen_name: 'twitterapi',
        count: 5
    },
    dataType: 'jsonp'
}).done(function (tweets) {
    console.log(tweets);
});

twitter は 1.0 API を非推奨にし、1.1 API には OAuth を要求しているため、同じ方法でツイート データを取得できるかどうかを調べてみました。

URLを次のように変更するだけです:

https://api.twitter.com/1.1/statuses/user_timeline.json

メッセージなしの400 Bad Request応答になります。

リクエストの OAuth 署名を作成するための Twitter ツールがあることは知っていますが、それを JSONP リクエストで使用する方法や、JSONP リクエストで使用できるかどうかさえわかりません。

Twitter 1.1 API でユーザーのタイムラインを読み取ることはまだ可能ですか?

4

4 に答える 4

5

If you take a look at Twitter's Error Codes & Responses, status code 400 means:

The request was invalid. An accompanying error message will explain why. This is the status code will be returned during version 1.0 rate limiting. In API v1.1, a request without authentication is considered invalid and you will get this response.

So while a 400 code used to mean you exceeded the rate limit, now it also returns when the request isn't authenticated.

To authenticate the request, you'd have to add an Oauth Authorization header. There are some libraries that can help with that, but the problem is that to generate the Oauth signature, you'd have to hard-code your app's keys (including secret key) into your client-side code, which will expose it to end-users (not a good idea).

Your best bet is to set up a proxy on your server - have the server make a GET with the Oauth header, and use ajax to get the tweets from your server.

于 2012-09-18T16:33:08.957 に答える
4

redhotvengeance は正しいです。2013年 3 月現在、サーバー側が唯一の安全なオプションですが、私の推奨する解決策は、cronjob をセットアップして結果をどこかにキャッシュすることです。プロキシの使用は、レート制限に非常に迅速に到達するための優れた方法です!

たとえば、API のuser_timeline部分を使用する予定の場合、15 分あたり 15 リクエストに制限されているため、1 時間あたりページで 60 を超えるヒットを取得した場合、それらの 400 エラーを429 エラーと交換することになります。

于 2012-10-10T23:21:28.317 に答える
0

私は実際、他のいくつかの質問への回答としてこれを投稿しました。繰り返しについては申し訳ありませんが、これにより多くの時間を節約できると思います。

Twitter1.1APIで動作するようにプラグインを更新しました。残念ながら、Twitterの要請により、サーバー側のコードから実際のリクエストを実行する必要があります。ただし、プラグインに応答を渡すことができ、残りはプラグインが処理します。実行しているフレームワークはわかりませんが、C#でリクエストを行うためのサンプルコードをすでに追加しており、まもなくPHP用のサンプルコードを追加する予定です。

幸運を!:)

于 2013-03-18T16:55:17.800 に答える