[解決済み】Twitter APIバージョン1.1でuser_timelineを取得する最もシンプルなPHPサンプル
質問
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を使いたいんですね。
バージョン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もあなたの友人です。
関連
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】PHPで空の値からデフォルトオブジェクトを作成する?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] PHP と mod_fcgid: handle_request_ipc 関数で ap_pass_brigade が失敗する。
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] PHP 未定義関数への呼び出し
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】/var/www/htmlとは何ですか?[クローズド]
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて