Rollback of Plugin/追加プラグイン/twitter.inc.php(OAuth対応版)

このバージョンに戻す
[Rev:Vgl0EAOnZr](最終更新:10年前)

概要

Twitterのツイートを拾い、PukiWikiページに埋め込むプラグインです。
内部で処理を行っているため、実装によってはNGワードによる対象のブロックも可能です。
http://d.hatena.ne.jp/stealthinu/20100607/p2で公開されているプラグインをOAuthに対応し、JavaScript自動更新を外したものです。
LICENSE:GPL version2.0

PHP5.5環境でPukiWikiが動作しないため、PukiWiki環境下での動作検証は行っておりません。
動作はget_passage関数に依存しています。実装されていない場合は書き換えてください。

ダウンロード

2016-05-12 08:55:34 3KB
application/zip

ファイルはzipファイルです。
ブラウザによっては拡張子が付与されない場合もあります。
その場合「.zip」をファイル名の末尾に追加してください。

特徴

  • OAuth認証によるツイートの取得
  • 取得したツイートのHTMLへの埋め込み
  • 取得したデータのキャッシュ(デフォルトで10分)
  • twitter.inc.php一部互換
  • JavaScriptによる自動更新はありません

自動更新を外した理由として3点あり

  • 本Pluginはキャッシュを実装したため、更新時間に制限が発生した
  • TwitterAPIに認証が必須になったため、回数制限が発生した
  • TwitterAPIに認証が必須になったため、Pluginを通して取得しなければならなくなった
    上記の3点です。

設定項目

ラベル説明
PLUGIN_TWITTER_API_KEYアプリケーション作成時に表示されるAPI key
PLUGIN_TWITTER_API_SECRETアプリケーション作成時に表示されるAPI secret
PLUGIN_TWITTER_ACCESS_TOKENOPTION:アクセストークンを予め保存しておくことで通信を1回減らす

動作例(PukiWikiの検索)

技術情報

本Pluginはapplication-only-authという認証方式で認証しています。
これはアプリケーション発行の際に生成されるAPI KEYとAPI SECRETのみで動作し、実行できることが限られます。

認証方法
API keyとAPI secretにURLエンコードを施し、:(コロン)で接続した後、
Base64でエンコードしたデータを通信ヘッダーに認証項目を付加する
POST通信でgrant_type=client_credentialshttps://api.twitter.com/oauth2/tokenへPOSTする

 POST /oauth2/token HTTP/1.0
 Host: api.twitter.com
 User-Agent: My Twitter App v1.0.23
 Authorization: Basic (Base64でエンコードしたデータ)
 Content-Type: application/x-www-form-urlencoded;charset=UTF-8
 
 grant_type=client_credentials

access_tokenが返ってくるのでアクセストークンを用いてAPIを利用する。

注意事項

if (!defined('PLUGIN_TWITTER_ACCESS_TOKEN')) {
	// get access token
	$authorization = "Basic ".base64_encode(rawurlencode(PLUGIN_TWITTER_API_KEY) . ':' . rawurlencode(PLUGIN_TWITTER_API_SECRET));
	$json = plugin_twitter_post_token($authorization, "POST", PLUGIN_TWITTER_OAUTH_TOKEN, "grant_type=client_credentials");
	$access_token = $json->access_token;
} else {
	$access_token = PLUGIN_TWITTER_ACCESS_TOKEN;
}

この部分の$access_tokenがPLUGIN_TWITTER_ACCESS_TOKENに当たりますが
外部からアクセス出来る場所に保存しないでください。悪用される可能性があります。
ローカル環境で$access_tokenを出力し、設定することを推奨します。

スポンサー