私の要件に役立つ答えを見つけました。
私の要件は、iPhone アプリを開発していて、Twitter で特定のユーザーからの特定のツイートが必要であるということでした。これは、古い twitter api を使用すると非常に簡単でしたが、v1.1 を使用すると、ユーザー認証が必要でした。
iOS は独自のソーシャル SDK を提供していますが、ユーザーが Twitter を持っていないか、携帯電話にサインインしていなくてもフィードを受信している可能性があるという事実を考慮したかったのです。私の調査では、ほとんどすべての解決策でユーザーの iPhone 設定をチェックして、ユーザーが Twitter アカウントを設定していることを確認したため、何も見つかりませんでした。
これらは私の制約であったため、PHP を使用して Web サービスを作成し、Twitter で認証して、必要なツイートを取得することを検討することにしました。それらを JSON にエンコードし、エコーします。
次に、IOS アプリからこの Web サービスを呼び出してデシリアライズし、必要な方法で使用しました。
今いくつかのコード。
新しい twitter API で PHP を使用する方法の答えのほとんどは、
https ://github.com/J7mbo/twitter-api-php にあります。ここからファイルを取得すると、彼が提供する例を見ることができます。私は下に小さなものを与えました。
ここに私が使用する必要があったいくつかのステップがあります
- ツイッターでアプリを作る。https://dev.twitter.com/にアクセスし、Twitter アカウントでログインします。そこに着いたら、アプリケーションを作成する必要があります。
- 上記からファイルを取得し、TwitterAPIExchange.php をサーバーに配置します。
- PHP ファイルを作成し、require_once('TwitterAPIExchange.php')を配置します。頂点で
アプリケーションを作成した後、ダッシュボードから、twitter API で認証するために必要な情報が提供されます。そのようにあなたのphpでそれを使用してください
$settings = array( 'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN", 'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET", 'consumer_key' => "YOUR_CONSUMER_KEY", 'consumer_secret' => "YOUR_CONSUMER_SECRET" );
この配列を設定したら、必要なものを設定するために必要なものを指定するために進むことができます
$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$getfields = '?screen_name=screen_name_you_want&count=number_of_tweets_you_want';
$requestMethod = 'GET';
URL には、スクリプトが認証された後に取得するリソースが示されています。その下にパラメータがあります。取得するツイートのスクリーン名と数。リクエストメソッドのプロトコルはGETになります。何かをタイムラインに投稿したい場合は、POST を使用する必要がありますが、開発者アカウントからアプリへのアクセスも変更する必要があります。現在、私のアプリには読み取りアクセスのみが必要なので、読み取りアクセスしかありません。
次に、実行する時間です
$twitter = new TwitterAPIExchange($settings);
$tweets = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
J7mbo の github の例を見ると、彼はタイムライン全体をエコーします。それを実行して、それがどのように見えるかを確認することができます。
$tweet_array = array();
$index = 1;
foreach($tweets as $feed=>$item)
{
$arr_index = 'tweet'.$index;
$tweet_array[$arr_index] => $item['text'];
$index++;
}
echo json_encode($arr_index);
これは、"tweet1"=>"Latest Tweet","tweet2"=>"Second Latest Tweet" のような json をエコーします。
Xcode からこの URL を呼び出して、json フィードを取得し、必要に応じて使用できます。
余談ですが、スクリプトが実行されるたびに、認証を行ってフィードを取得するのに時間がかかります。これは IOS アプリを対象としていたため、キャッシュを適用することをお勧めします。問題のユーザーが Twitter を更新する頻度に応じて、time_limit を設定できます。ツイートを取得するたびに、それをデータベースに保存します。次のユーザーがツイートを要求した場合は、制限時間を確認し、それより短い場合はデータベースから取得し、制限時間を過ぎている場合はデータベースを更新し、ユーザーに新しい結果を送信します。
J7mbo の GitHub ライブラリと、tumblr を使用したより簡単な回避策を指摘した MZimmerman に感謝します。
ありがとう。