Perlを使ってFacebookの自分のウォールに写真付きで投稿する方法

カテゴリー:Perl・Javascript・python、サーバー管理メモ(記事数:83)



↑B


2011.07.24

Perlを使ってFacebookの自分のウォールに写真付きで投稿する方法

やっと成功した。個人的メモ。
基本は以前に紹介したTwitterの場合のOath認証と同じですが、専用のAPIも必要なく、もっと簡単に扱えます。Open Graph Protocolって思想ってか?

(1)開発者ページにアクセス。アプリを登録する。サイトURLドメインは下記の認証作業で使用する必要があるため、2つとも同じにして自分でPerlスクリプトをおける場所にする(下記で使うredirect_uriとドメインが違うとエラーになる。)。
(2)登録すると、AppIDAppSecretが発行されるのでメモ
(3)アプリを使ってaccess_tokenを取得するためのスクリプトを作成、設置。https://usewill.com/facebook.cgiでやりとりするとして話を進める。以下の2回のFacebook graph APIのアクセスで投稿に必要なユーザーごとのaccess_tokenが取得出来る。
<<概要>>
step.1:AppIDと取得したいアクセス権限のリストを添えてFacebook graph APIに送る(アクセス1回目)
step.2:Facebook graph APIは申請を行ったユーザーに(パソコンに保存されているcookie内容を元に)アプリからのアクセスを許可するかユーザーに聞く
step.3:許可された場合、Facebookのgraph APIがredirect_uriに認証コードを返してくる。
step.4:AppID、AppSecret、取得した認証コードを添えてユーザーごとのaccess_tokenを要求(アクセス2回目)
step.5:承認されればFacebook graph APIからユーザーごとのaccess_tokenが帰ってくる。

<<具体例>>
★step.1の部分
https://graph.facebook.com/oauth/authorize?client_id= AppID&redirect_uri= https://usewill.com/facebook.cgi(URLエンコードしておく)&scope=publish_stream,offline_access
上記の例ではscopeはウォールへの書き込みに必要な「publish_stream」と、ログオンしてなくてもアクセス可能にするための「offline_access」を要求している。この2つでウォールへの書き込み可能。
★step.4の部分
作成したfacebook.cgiではFacebook graph APIがstep3でGETで渡してくる認証コード(code)を含めて
https://graph.facebook.com/oauth/access_token?client_id= AppID&redirect_uri= https://usewill.com/facebook.cgi(URLエンコードしておく)&client_secret= AppSecret&code= step3で渡された認証コード(code)
という内容で再度Facebook graph APIにアクセスすると
access_token=xxxxxxxxxxxxxxxx
という内容がページ内容として帰ってきて、かつredirect_uriに転送される。

※step3→step4は同じスクリプト内などでシームレスにやる必要があるようだ。たとえばいったん認証コードを保存し、手作業でstep4を実行するとエラーとなる。制限時間がある?よく分からない。
※step1とstep4のredirect_uriは同じじゃないとエラーが出る。
※Facebook graph APIはhttpsでアクセスしないとダメ、Crypt::SSLeayがインストールされてなくてLWPでhttpsアクセス出来ない糞レンタルサーバーじゃダメっす。

(4)実際の投稿プロセス
いったんaccess_tokenが取得出来れば
<form action="https://graph.facebook.com/ あなたのUserID/feed" method="post">
<form action="https://graph.facebook.com/me/feed" method="post">でOK
<input type="hidden" name="access_token" value=" 取得したaccess_token">
<input type="hidden" name="picture" value=" 投稿した画像のURL(無くてもOK)">
<input type="text" name="message" value=" メッセージ">
<input type=submit name="submit" value="submit">
</form>
的な内容をPOSTすれば投稿し放題。画像をURLで渡せるのは便利だね。直接データとして渡せる方法があるかどうかは不明。

ご参考。
さぁ、何作ろうかな♪

参考にしたページ

Category:Perl・Javascript・python、サーバー管理メモ



コメント

いいっすね!=1

名前 ↑B

コメント(※改行は省略されます)

※3回以上の連続書き込み不可
この記事のアクセス数:


→カテゴリー:Perl・Javascript・python、サーバー管理メモ(記事数:83)
アクセス数の多い記事(過去1ヶ月)

すべて見る