2011.07.24
Perlを使ってFacebookの自分のウォールに写真付きで投稿する方法
やっと成功した。個人的メモ。
基本は以前に紹介したTwitterの場合のOath認証と同じですが、専用のAPIも必要なく、もっと簡単に扱えます。Open Graph Protocolって思想ってか?
(1)開発者ページにアクセス。アプリを登録する。サイトURL、ドメインは下記の認証作業で使用する必要があるため、2つとも同じにして自分でPerlスクリプトをおける場所にする(下記で使うredirect_uriとドメインが違うとエラーになる。)。
(2)登録すると、AppIDと AppSecretが発行されるのでメモ
(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、サーバー管理メモ
コメント
この記事のアクセス数:40662025.01.25正規表現のオンラインWebチェッカー
2021.12.05中国のSippedが50ドルQVGAののToFカメラユニットを今年中に出荷開始。UVC、UART/SPI出力3コメ
2021.12.05Pythonのコードをワンラインで実行形式に変換してくれるPyInstaller1コメ
2021.12.03チャート、グラフを書くのに良さそうなGoogle Chart以外のJavascriptライブラリ5つ3コメ
2021.11.18まだ使ってる?今は非推奨となったJavaScriptの書き方。document.writeが強く非推奨だと!!!?4コメ
2021.10.19PerlのGD::Image->new()は画像じゃないデータを読み込ませるとエラーになることがあるので事前に手動で画像であることを確認した方が良い1コメ
2021.10.12【解決済み】ヨドバシとかZOZOのサイトにどうやってもスクリプトからアクセス出来ない16コメ
2021.08.31現代的なPerlの記述方法一覧2コメ
2021.07.09JavaScriptでワンタッチで仮想キーボードを表示する2コメ
2021.02.10PythonでPowerPointを作るライブラリ「python-pptx」が色々活用出来そう。22コメ
→カテゴリー:Perl・Javascript・python、サーバー管理メモ(記事数:82)
アクセス数の多い記事(過去1ヶ月)
隨ウ�ス2025.03.20:邵コ�ゥ郢ァ阮吮�闕ウ蝓シ�ス陷キ蛹サ窶イ郢晢スサ郢晢スサ郢晢スサ(隴幢スェ陋サ�ス�。�ス)681access
隨ウ�ス2025.03.14:8陝キ�エ邵コ�カ郢ァ鄙ォ竊鍋ケァ�オ郢晢スウ郢晢スゥ郢ァ�、郢ァ�コ陷�スコ鬮ョ�イ邵コ�ォ闕オ闍難スサ螂�スシ竏晢スョ�カ隴鯉ソス4闔��コ邵コ�ァ邵イ蠕後◆郢晢スュ陋溷唱�ョ�、邵イ�ス4鬩幢スィ陞サ荵昶�闕ウ鄙ォ�願嵯闍難スサ鄙ォ��邵コ貅佩鍋ケ晢ス「(#邵コ鄙ォ縲堤クコ荵晢ソ�隲��ス�ス�ア)485access
隨ウ�ス2025.03.16:陞滂スァ鬩・荳奇ソス郢晢スャ郢晢ス「郢晢スウ郢ァ蜑�スス蜷カ��クコ螢ス譽。雎寂悪�オ讒ュ�狗クコ�ョ邵コ遒∝アョ邵コ蜉ア�樒クイ繧�スョ蟲ィ�樣お讒ュ�願搦�ィ邵コ�ッ郢ァ�ッ郢ァ�ス邵コ�ー邵コ荵晢ス�(#髢セ�ェ陞ウ�スDIY #郢晢スォ郢晢スシ郢晁シ斐Θ郢晢スゥ郢ァ�ケ雎「�サ騾包スィ)446access
隨ウ�ス2025.03.11:陋サ譏エ�∫クコ�ヲ邵コ�ョ霎滂スシ邵コ蟠趣ス臥クコ髦ェ�鍋クコ謦ー�シ閧イ鮟�坡讒ュ縺慕ケ晢スシ郢晄亢ホ樒ケ晢スシ郢ァ�キ郢晢スァ郢晢スウ)邵コ�ョ隴ャ�ェ闕ウ�サ陷�スェ陟包ソス笙鬯滓サ会スコ蜿・陌サ郢ァ蛛オ縺皮ケ晢ソス繝ィ�ス�ス�シ�ス�シ�ス�シ�ス�シ竏昶煤陟包ソス�ス鬩滓ヲ奇スス轣倩懸陜玲ァュ�願濤�エ驍�ソス3�ス�ス�ィ蜿・�コ�ヲ(#邵コ莨≫横 #郢晄ァュ繝ュ郢晢スシ)363access
隨ウ�ス2025.03.17:邵コ蜷カツー邵コ�ス�臥ケ晢スシ邵コ遘汽邵コ�ョ隴ャ�ェ郢ァ雋樒ゥ隶鯉スュ邵コ蜉ア窶サ44闕ウ�ス�ス郢ァ�イ郢晢ソス繝ィ邵イ繧域呵�募セ鯉ソス隴ャ�ェ闕ウ�サ陷�スェ陟包ソス�定愾驤エ�ス�ス(#邵コ莨≫横 #郢晄ァュ繝ュ郢晢スシ)358access