2011.8.25 Facebook PowerShell Module のバージョンアップに伴いリライトしました
CodePlex に以下の SDK とモジュールが公開されています。
- Facebook C# SDK(5.0.50)
- Facebook PowerShell Module(Alpha
0.20.3.3)※Alphaですよ!みなさん
後者を見てざわざわしたものを感じた方は、完全に PowerShell にやられていると言って過言ではないでしょう。
理屈は追って説明することにして、まずは使ってみましょう。
以下をクリックして、Facebook PowerShell Module をダウンロードしてください。SDK はひとまず必要ありません。
ダウンロードしたファイルは ZIP形式になっているので、適当な場所(c:\tmp 等)に解凍したファイルを保存しましょう。
含まれているファイルは以下の通りです。
- Facebook.dll
- Facebook.pdb
- Facebook.ps1
- Facebook.psd1
- Facebook.psm1
- Facebook.xml
- FacebookExamples.ps1
- FacebookPSModule Alpha 0.3.3.msi ← インストーラー
- Microsoft.Contracts.dll
インストールは簡単です。
上記の FacebookPSModule Alpha 0.3.3.msi を実行するだけです。
インストールが完了すると、以下のように、プロファイル内に Facebook というフォルダが作成され、必要なファイルがコピーされます。
C:\Users\<ユーザー名>\Documents\WindowsPowerShell\Modules\Facebook
さて、ここまでできたらいよいよ触ってみましょう。
[スタートメニュー] – [アクセサリ] – [Windows PowerShell] から [Windows PowerShell ISE] を開いてください。なぜ、通常の PowerShell コンソールじゃだめなのかというと、このコマンドレット、ウィンドウを使うのです(理由は後でわかります)。ウィンドウを使用する場合には、powershell.exe –STA でコンソールを起動すればOKなのですが、なぜかこれではうまく動作せず...なので悩んでも仕方ないので今回は ISE を使用します。
ISE を起動したら、まずは Import コマンドで Facebook コマンドレットを読み込みます。以下のコマンドを入力してください。
| PS C:\> Import-Module facebook |
さらに、以下を入力してコマンドレットの一覧を確認しましょう。「新規追加」と書いているのは、alpha v 0.2 から新たにサポートされたコマンドレットです。
| PS C:\> Get-Command –Module facebook CommandType Name Definition |
ここまではOKでしょうか?
では Facebook に接続してみます。細かな理屈は追って解説します。
| PS C:\> New-FBConnection |
すると、Facebook へのログオン画面が表示されるのでログオンしましょう。
ユーザーの認証が完了すると、今度は以下の画面が表示されます。これはアプリケーションに自分自身のデータへのアクセスを認可する画面です。
ここで[許可する]をクリックすれば、以降、コマンドレットから Facebook 上に保存されている自分のデータにアクセスすることができます。
[拒否]すれば、もちろんアクセスできません。
Facebook から見ると、「Test_Application_jonn_msft」というアプリケーションに対して認可するように見えています。jonn とは、この Facebook PowerShell Module の作者です。
[許可する] をクリックすると、OAuth2 による認可プロセスが処理され、Facebook からアプリケーション(この場合は Facebook Powershell Module)に対して「アクセストークン」が返されます。
| PS C:\> New-FBConnection AccessToken |
「アクセストークン」とは、Facebook Powershell Module がユーザーの情報にアクセスするためのチケットのようなものです。このアクセストークンが無いと、ユーザー情報にはアクセスできません。
アクセストークンは %LOCALAPPDATA%\FacebookPowerShellModule_CachedToken.txt というファイル内に生テキストで保存されます。このファイルが流出すると他のプログラムから自分自身の情報にアクセスできてしまうので、くれぐれも取扱いには注意しましょう。
アクセストークンに関する詳細な解説は別の投稿で行うことにします。
さっそく ISE の画面から以下のコマンドレットを入力してみましょう。
| >Get-FBFriends |Sort-Object name id name |
何をしているかは一目瞭然ですよね。自分の Facebook 上の友達(なんか悲しい表現だな..)の一覧を取得して表示しています。その際に、Sort-Object を使用して、nameでソートしています。
[id] とは Facebook 上の ID です。Facebook 上の一切のオブジェクト(ユーザー、写真、投稿したコメント、その他もろもろ)には必ず識別するための ID がついています。友達の詳細な情報を取得するときにも、この ID を使用します。
PowerShell なので、当然、こんなこともできます。便利ですね。
| PS C:\> (Get-FBFriends).count |
友達の ID を取得できることがわかったので、今度は特定の友達の詳細な情報を見てみましょう。先ほど取得した ID を使用します。
| PS C:\> Get-FBObjectData -Id "100002xxxxxxxx" relationship_status : Single |
結果を見ると、独身の日本人男性で、少々変○であることがわかります。また、最終更新日が4月21日と、最近ごぶさたなこともわかりますね。こうした情報は、「友達」だから見えるのであって、誰でも彼でも見えるわけではありません。
なお、Facebook のプロフィールにはもっとたくさんの情報を登録することができます。この方の場合は、必要最小限の情報のみが登録されているようです。
例えば、私の情報を参照すると以下のように表示されます。-Id に “me” と指定していますが、Facebook では自分自身(認証済ユーザー)は”me” で表現することができます。便利ですね。
| PS C:\> Get-FBObjectData -Id me verified : True |
全ての友達の全てのプロフィールと一気に取得する...なんて場合には以下のように記述することもできます。一度友だち全員のプロフィールを確認して、うかつに「承認」してしまったことを後悔してみるのも悪くありません。
| PS C:\> Get-FBFriends | Get-FBObjectData |
さて、Facebook の醍醐味は、単に自分自身のプロフィールを登録するだけでなく、さまざまな付帯情報を管理できる点にあります。付帯情報とは、「友達」、「投稿」「好きな映画」「いいね!」などなど。これらはまとめて「Connection」と呼ばれています。
Connection には以下のようなタイプのデータがあります。
- friends:友だち
- home:ニュースフィード
- feed:ウォール
- likes:いいね
- movies:映画
- music:音楽
- books:本
- notes:ノート
- permissions:プライバシー設定
- photos:写真のタグ
- albums:アルバム
- videos:ビデオ
- videos/uploaded:ウォールにアップロードしたビデオ
- events:イベント
- groups:グループ
- checkins:チェックイン
- television :テレビ
- Games :ゲーム
- Links :ウォールに投稿したリンク
これ以外にもまだあるはずですが、ちょっと時間が無いのでここまで。
Connectionタイプの情報を取得するには、Get-FBAssociation コマンドレットを使用します。
以下は、私が過去に「いいね!」したオブジェクトの一覧です。「いいね!」した日付順に並べています。
| PS C:\> Get-FBAssociation -Id "me" -Type "likes" | Sort-Object created_time id name created_time category |
この結果を見て気づいたのですが、プロフィールに指定した「本」や「映画」は「いいね!」としてマークされてるんですね。うかつに変なものは入れておけないですね。
もちろん、友達の「いいね!」も表示することができます。
ここで、「人」ではないものも触ってみましょう。上の一覧に、「日本マイクロソフトUXチーム」というのが表示されています。赤文字の部分です。
これは人ではなく、Facebookページです。もちろんこいつにも ID が付与されており、以下のようにして関連情報を収集することができます。
以下は、Facebook ページのウォールに投稿されたFeedを収集しています。
| PS C:\> Get-FBAssociation -Id "233115383381196" -Type "feed" id : 233115383381196_251158651576869 ・ ・ |
上記の結果で、「likes」の行をご覧ください。これは、この投稿によせられた「いいね!」です。このようにして、投稿1つ1つからも関連した情報を引っ張ってくることができるのですね。
なお、Clear-FBConnection というコマンドレットはあるのですが、このバージョンでは Facebook からのログアウトがサポートされていません。よって、現時点では手動でログアウトする必要があります。
どうでしょう?
PowerShell が使えるとなると、Facebook が一気に身近なものに感じられますよね。
次回以降では、内部の動き、特に認証と認可まわりについて解説することにします。
