1. ホーム
  2. php

[解決済み】Twitter APIバージョン1.1でuser_timelineを取得する最もシンプルなPHPサンプル

2022-04-16 10:25:13

質問

Twitter API 1.0の廃止に伴い、以下のようになりました。 2013年6月11日 以下のスクリプトはもう動作しません。

// Create curl resource 
$ch = curl_init(); 
// Set url 
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/myscreenname.json?count=10"); 
// Return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
// $output contains the output string 
$output = curl_exec($ch); 
// Close curl resource to free up system resources 
curl_close($ch);

if ($output) 
{
    $tweets = json_decode($output,true);

    foreach ($tweets as $tweet)
    {
        print_r($tweet);
    }
}

user_timeline (最近のステータス) をできるだけ少ないコードで取得するにはどうすればよいですか?

こんなのを見つけました。 https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline が、以下のようなエラーが発生します。

"{"errors":[{"message":"Could not authenticate you","code":32}]}"

たくさんのクラスがありますが、いくつか試してみたところ、Twitterのこれらのアップデートのため、どれもうまくいかないようです。

PHPで最近のユーザーの状態を取得する最もシンプルで最短の方法は何ですか?

どのように解決するのですか?

<ブロッククオート

重要なお知らせです。 2018年半ばから、twitterのAPIトークンを取得するためのプロセスが、かなり官僚的になりました。そのため、私は 1営業日 のオープンソースプロジェクトで、APIトークン一式が提供されました。 120万インストール のPackagistとGithubの1.6kスターは、理論的にはもっと優先度が高いはずです。

もしあなたが仕事でtwitter APIを使う仕事を任されているなら、この非常に長い待ち時間の可能性を考慮に入れなければなりません。また、FacebookやInstagramのような他のソーシャルメディアの手段を検討し、それらのトークンを取得するためのプロセスが即時であるため、これらのオプションを提供します。


Twitter v1.1のAPIを使いたいんですね。

注:これらのファイルはGitHubにあります。 .

バージョン1.0 は間もなく非推奨となります で、不正なリクエストは許されない。そこで、この記事ではそのための手助けをするために、PHPのクラスを紹介します。

<ブロッククオート

1. 開発者アカウントを作成する。 を自分で設定します。 デベロッパーアカウント Twitterで

Twitterの公式開発者サイトにアクセスし、開発者アカウントを登録する必要があります。 これは 無料 v1.1のAPIにリクエストを行うために必要なステップです。

<ブロッククオート

2. アプリケーションを作成します。 Twitterの開発者向けサイトでアプリケーションを作成する

えっ、認証されていないリクエストができると思った?Twitterのv1.1 APIはそうではありません。 以下のサイトにアクセスする必要があります。 http://dev.twitter.com/apps をクリックし、「アプリケーションを作成する」ボタンをクリックします。

このページで、好きな内容を記入します。私の場合は、スパムフォロワーを排除するためにブロックリクエストを大量に作りたかっただけなので、どうでもいいことです。ポイントは、あなた自身を取得するつもりです。 ユニークキーのセット を使用することができます。

つまり、アプリケーションを作成するポイントは、自分自身(とTwitter)に一連のキーを与えることです。これらは

  • コンシューマーキー
  • コンシューマーシークレット
  • アクセストークン
  • アクセストークンの秘密

ちょっとだけ情報あり ここで これらのトークンは何のためにあるのでしょうか。

<ブロッククオート

3. アクセストークンの作成 : リクエストを成功させるには、これが必要です

OAuth は、いくつかのトークンを要求します。そのため、それらを生成してもらう必要があります。

一番下にある "create my access token" をクリックします。その後、再び一番下までスクロールすると、新しく生成されたキーがいくつか表示されます。このページには、以前にラベル付けされた4つのキーをAPIコールのために取得する必要があるので、どこかにメモしておいてください。

<ブロッククオート

4. アクセスレベルの変更 : 読み取り専用は嫌でしょう?

このAPIをまともに使いたいのであれば、Read & Writeに設定を変更する必要があります。 GET のリクエストに対応します。

ページ上部にある「設定」タブを選択します。

アプリケーションに読み取り/書き込み権限を与え、一番下にある "Update"を押してください。

あなたは アプリケーションの権限モデルについてもっと読む は、Twitterが使用しているものです。


<ブロッククオート

5. APIにアクセスするためのコードを書く : 私はあなたのためにそれをほとんど行ってきました

私は上記のコードにいくつかの修正と変更を加えて、PHPのクラスにまとめましたので、あなたが必要とするリクエストを作るのは本当に簡単です。

これは OAuth Twitter v1.1 API そして、私が作成したクラスは、以下のとおりです。

require_once('TwitterAPIExchange.php');

/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$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を選択します。Twitterでは APIドキュメント を使用すると、URL とリクエストタイプ (POST または GET) を選択するのに役立ちます。

/** URL for REST request, see: https://dev.twitter.com/docs/api/1.1/ **/
$url = 'https://api.twitter.com/1.1/blocks/create.json';
$requestMethod = 'POST';

ドキュメントでは、各URLに何を渡すことができるかが記載されています。上のような "blocks" という URL を使っている場合、以下のような POST パラメータを渡すことができます。

/** POST fields required by the URL above. See relevant docs as above **/
$postfields = array(
    'screen_name' => 'usernameToBlock', 
    'skip_status' => '1'
);

さて、APIを使ってやりたいことを設定したら、いよいよ実際にリクエストしてみましょう。

/** Perform the request and echo the response **/
$twitter = new TwitterAPIExchange($settings);
echo $twitter->buildOauth($url, $requestMethod)
             ->setPostfields($postfields)
             ->performRequest();

そして POST をリクエストすれば、それだけでOKです。

については GET リクエストの場合は、少し異なります。以下はその例です。

/** Note: Set the GET field BEFORE calling buildOauth(); **/
$url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?username=J7mbo';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();     


最終的なコード例 : 私のフォロワーのリストを取得するための単純なGETリクエストの場合。

$url = 'https://api.twitter.com/1.1/followers/list.json';
$getfield = '?username=J7mbo&skip_status=1';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();  

これらのファイルはGitHubに置いてあります。 は、@lackovic10 と @rivers に謝意を表します! 私はこれをループ内のバルクブロックに使いました。

<ブロッククオート

また、WindowsでSSL証明書に問題がある方は、以下をご覧ください。 この記事 . このライブラリは、ボンネットの下でcURLを使用しているので、あなたはおそらくあなたのcURL証明書を設定することを確認する必要があります。Googleもあなたの友人です。