概要 
Twitterのツイートを拾い、PukiWikiページに埋め込むプラグインです。
内部で処理を行っているため、実装によってはNGワードによる対象のブロックも可能です。
http://d.hatena.ne.jp/stealthinu/20100607/p2で公開されているプラグインをOAuthに対応し、JavaScript自動更新を外したものです。
LICENSE:GPL version2.0
PHP5.5環境でPukiWikiが動作しないため、PukiWiki環境下での動作検証は行っておりません。
動作はget_passage関数に依存しています。実装されていない場合は書き換えてください。
ダウンロード 
plugin/twitter.inc.php
ファイルは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_TOKEN | OPTION:アクセストークンを予め保存しておくことで通信を1回減らす |
動作例(PukiWiki -httpの検索) 
guccii RT @hugeda: マジレスするとこんな感じ。もうかなり昔だしね… ・ホスティング先のPHPのバージョンが上がって、Pukiwikiがそのままだと動かなくなった。 ・Wikiのバージョン上げて再移行とかクッソしんどい。 ・Pukiwikiまともに動かない状態でホスティン…
178(INaBa) @Toxic_Material https://t.co/bPRxaEwSO5 なお多分元ネタ
藤枝市民@ @heppoko @yasei_no_otoko 環境が変わった時のアップデート対応や維持が面倒なのは、Pukiwikiが動かなくなったあたりで痛感したので、鯖は自前で持たずにGitHub等のサービスを借りるのが無難かなと。 学… https://t.co/3yamSF59bq
kamase Pukiwikiってsortabletableのフィルタ結果をincludeするような事ってできないのかなぁ。
アケマス設置店舗Wikibot 【設置店紹介】アミューズメントジャムジャムつくば店(茨城県つくば市) https://t.co/nC6agyFXK7 2018年3月13日、店舗ツイッターより設置情報あり!
しのなぎ(椎野凪) SSIDとPW変更して、FreshRSSとPukiWikiの動いてるラズゼロ再接続した
Naitsuku🌍 Pukiwiki、最近でも更新されてる。すごい
野生の男 WILDMAN @hugeda 今だとGitHub辺りに残っている資料ファイルを上げてリポジトリWiki辺りにPukiwiki時代のテキストを手分けして移行が手数も少なくて妥当ですかね… 現状一番マズいのがホスティングをやめた事がどこにも告知され… https://t.co/Bru8kWue6C
Mimaki SiON RT @hugeda: マジレスするとこんな感じ。もうかなり昔だしね… ・ホスティング先のPHPのバージョンが上がって、Pukiwikiがそのままだと動かなくなった。 ・Wikiのバージョン上げて再移行とかクッソしんどい。 ・Pukiwikiまともに動かない状態でホスティン…
藤枝市民@ マジレスするとこんな感じ。もうかなり昔だしね… ・ホスティング先のPHPのバージョンが上がって、Pukiwikiがそのままだと動かなくなった。 ・Wikiのバージョン上げて再移行とかクッソしんどい。 ・Pukiwikiまともに… https://t.co/2T9S0gj3z3
アケマス設置店舗Wikibot 【稼働終了情報】ファンタジスタ(岡山県倉敷市) https://t.co/k42KRnAnz9 2018年12月6日をもって稼働終了となりました。中国地区最後の、稼働初期からの設置店として、長きにわたる活動、本当にありがとうございました!!
Oru いつも準急久喜行きってのが準急pukiwikiに聞こえる
アケマス設置店舗Wikibot 【設置店紹介】アミューズメントジャムジャムつくば店(茨城県つくば市) https://t.co/nC6agyFXK7 2018年3月13日、店舗ツイッターより設置情報あり!
Fine Lagusaz ゴーストとあわせてショートショート読むとまた見え方変わったりするのではないかなー、と。 https://t.co/i8Q1NKw1B0
Fine Lagusaz https://t.co/ysILTB2p4c
Fine Lagusaz VR MMO「Extreme World」のギルドマスターと副ギルドマスターの雑談系ゴースト「エンケの空隙」 https://t.co/XGpJKcZqt1
Fine Lagusaz 伺かのゴースト(キャラクターデータ)とかショートショート書いてます。 https://t.co/XvIVRlkiwQ
kym 1/21 12:23 名古屋の太陽(11/21) 今日も2797群でC1.4のフレアー発生。2797群の左側が2798群として割り当てられ今日は2つの黒点群が見えます。 シーイングもよくフレアー部分もよく見えます。 https://t.co/q3XjUKaWDM
りな 研究室のPukiwikiに慣れてしまって、階層構造がある方が管理しやすいレガシーな人間になった
アケマス設置店舗Wikibot 【稼働終了情報】ファンタジスタ(岡山県倉敷市) https://t.co/k42KRnAnz9 2018年12月6日をもって稼働終了となりました。中国地区最後の、稼働初期からの設置店として、長きにわたる活動、本当にありがとうございました!!
アケマス設置店舗Wikibot 【設置店紹介】アミューズメントジャムジャムつくば店(茨城県つくば市) https://t.co/nC6agyFXK7 2018年3月13日、店舗ツイッターより設置情報あり!
kym 1/20 12:38名古屋の太陽(10/20) 世界時間 2797群でC1フレアーが発生。撮影した時間は 増光して異常に明るく見えていました https://t.co/4CDdyD4va3
アケマス設置店舗Wikibot 【稼働終了情報】ファンタジスタ(岡山県倉敷市) https://t.co/k42KRnAnz9 2018年12月6日をもって稼働終了となりました。中国地区最後の、稼働初期からの設置店として、長きにわたる活動、本当にありがとうございました!!
アケマス設置店舗Wikibot 【設置店紹介】アミューズメントジャムジャムつくば店(茨城県つくば市) https://t.co/nC6agyFXK7 2018年3月13日、店舗ツイッターより設置情報あり!
高坂優希 도시처녀 시집와요の歌詞を調べていたらこれがヒットした時の顔 도시처녀 시집와요 - PukiWiki https://t.co/IfHOtkw55i
kym 1/19 11:37名古屋の太陽(9/19) 見やすくなってきた2797群 後を追って出てきた黒点も明確になってきた。 2797群の1,2,3周目の写真を並べてみました 同じ黒点でも顔が変わっています。 https://t.co/VsW2YHjcl8
kym 1/18 12:49 名古屋の太陽(8/17) 登ってきたAR2797. AR2796は眼視/写真とも確認できず https://t.co/zaDtz9O6ZI
アケマス設置店舗Wikibot 【稼働終了情報】ファンタジスタ(岡山県倉敷市) https://t.co/k42KRnRYXJ 2018年12月6日をもって稼働終了となりました。中国地区最後の、稼働初期からの設置店として、長きにわたる活動、本当にありがとうございました!!
語学たん達を応援するたん (応援たん) @Latina_tan @amharagotan pukiwikiもワードプレスもCMSの一種ですからねえ 情報をためておける場所を持っておくって大事ですよね
技術情報 
本Pluginはapplication-only-authという認証方式で認証しています。
これはアプリケーション発行の際に生成されるAPI KEYとAPI SECRETのみで動作し、実行できることが限られます。
認証方法
API keyとAPI secretにURLエンコードを施し、:(コロン)で接続した後、
Base64でエンコードしたデータを通信ヘッダーに認証項目を付加する
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を出力し、設定することを推奨します。