PHPでツイートの埋め込み用HTMLを取得

(1/1)
今回は、PHP で「Twitter API」を利用し、ホームページやブログにツイートを埋め込むための HTML を取得するプログラムをつくる。

サンプル・プログラム:実行例

PHPでツイートの埋め込み用HTMLを取得
「メッセージ」に送信したいテキストを入力し、「画像(ローカル)」に送信したい画像ファイルを選択し、「画像(URL)」に送信したい画像ファイルの URL を入力する。画像は、ローカルと URL を合わせて最大 4 個まで指定できる。それ以上は入力しても無視される。
「ツイート」ボタンを押すと、ツイートし、結果メッセージが表示される。

サンプル・プログラム

Twitter API クラス

Twitter API を利用する関数群はクラス pahooTwitterAPI として別ファイル "pahooTwitterAPI.php" に定義してある。このファイルを  require_once  できるパスに配置すること。

OAuth認証を利用するため、プログラムを Twitter に登録する必要がある。その手順については「PHP で Twitter に投稿(ツイート)する」を参照のこと。取得したパラメータは、クラス pahooTwitterAPI 冒頭にあるクラス定数に記載すること。

https通信を使うため、PHP から OpenSSL を利用できるようにしておく必要がある。その手順は「PHP の https 対応」を参照のこと。
プログラムがうまく動かなかったら、「Twitter への再登録が必要な場合も」を参照のこと。

Twitter API:GET statuses/oembed

対象ツイートを、ホームページやブログで表示するための埋め込み用HTML を取得するための Twitter API である。
Twitter API (GET)
URL
https://publish.twitter.com/oembed

入力パラメータ
項目名 フィールド名 内  容
対象ツイートのURL url string 【必須】
フレームの最大横幅 maxwidth integer ピクセル値で指定する。pxは不要。220px〜550pxの間で指定可能。
メディアを隠すか否か hide_media bool ツイートの、画像や動画などのメディアを隠すか否か。trueなら隠す、falseなら隠さない。
個別表示にするか否か hide_thread bool リプライが存在する場合、スレッドを隠してツイートを個別表示にするか否か。trueなら個別表示、falseならリプライ先を含めて表示。
JavaScriptを追加するか否か omit_script bool ウィジェット用のJavaScript要素を追加するか否か。他の場所でウィジェットのライブラリを読み込んでいる場合は不要なのでfalseを推奨。
ウィジェットの色 theme string light(白)またはdark(黒)。
応答データ(json) url 対象ツイートのURL author_name スクリーンネーム author_url アカウントのURL html 取り出したHTML width フレームの幅

解説:埋め込み用HTMLを取得

0436: /**
0437:  * ツイートの埋め込み用HTMLを取得
0438:  * @param string $url    ツイートURL
0439:  * @param int    $width  フレームの最大横幅(ピクセル)
0440:  * @param bool   $script JavaScriptを追加するか否か
0441:  * @return string HTML
0442: */
0443: function oembed($url$width$script) {
0444:     static $url_oembed = 'https://publish.twitter.com/oembed';
0445:     static $method         = 'GET';
0446:     $option['url'] = $url;
0447:     $option['omit_script'] = $script ? 'true' : 'false';
0448:     $option['maxwidth'] = $width;
0449: 
0450:     $res = $this->request_user($url_oembed$method$option);
0451: 
0452:     if ($res == FALSE)  return FALSE;
0453: 
0454:     $results = isset($this->responses->html) ? $this->responses->html : FALSE;
0455: 
0456:     return $results;
0457: }

基本的には、「PHP で Twitter に投稿(ツイート)する」とで解説したリクエスト関数 request_user と同じである。

参考サイト

(この項おわり)
header