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

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



↑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回以上の連続書き込み不可
この記事のアクセス数:4066
2025.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

すべて見る

Perl
2025/04/03 21:30:(DeepL:オレンジ)(Fierce Biotech)
2025/04/03 00:34:(DeepL:OppoがFind X8 UltraとX8sのティーザー動画を公開、今夜Oppo 2025 Imaging Tech Nightを開催する。)Oppo posts Find X8 Ultra and X8s teaser video, will hold Oppo 2025 Imaging Tech Night tonight(GSMArena.com - Latest articles)
2025/04/01 08:02:マイクロソフト、OSを介さず仮想化ハイパーバイザ上でWasmを高速起動し実行できる「Hyperlight Wasm」、オープンソースで公開(はてなブックマーク - 人気エントリー - 総合)
2025/03/31 23:42:(DeepL:Wide character in HTTP request (bytes required) at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/LWP/Protocol/http.pm line 280.)Shinichir? Watanabe’s New Anime Lazarus Has the Juice(Gizmodo)
2025/03/28 22:22:(DeepL:Wide character in HTTP request (bytes required) at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/LWP/Protocol/http.pm line 280.)Author Correction: Microglial mechanisms drive amyloid-β clearance in immunized patients with Alzheimer’s disease(Nature Medicine)
2025/03/27 10:30:Prime Video 4月新作は「機動戦士Gundam GQuuuuuuX」「片田舎のおっさん、剣聖になる」(AV Watch)
2025/03/23 09:10:(DeepL:小さなキューブ型キャンピングカーは、お金で買える最もステルスなナノホームかもしれない)Tiny cube camper might be the stealthiest nano-home money can buy(New Atlas - New Technology & Science News)
2025/03/21 15:24:(DeepL:人気ジムサプリの筋肉増強効果は誇張されすぎているかもしれない)Popular gym supplement's effects on muscle gains might be overstated(New Atlas - New Technology & Science News)
2025/03/20 03:26:(DeepL:read timeout at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/Net/HTTP/Methods.pm line 274.)Charted: How Amazon Makes Its Billions(Visual Capitalist)
2025/03/20 03:20:(DeepL:read timeout at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/Net/HTTP/Methods.pm line 274.)Split Fiction Players Complete Super-Secret Level And Win Awesome Prize(Kotaku)
2025/03/20 03:16:(DeepL:read timeout at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/Net/HTTP/Methods.pm line 274.)Off-grid tiny house provides road-ready freedom for two(New Atlas - New Technology & Science News)
2025/03/20 00:50:(DeepL:read timeout at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/Net/HTTP/Methods.pm line 274.)The Difference Between Weightlifting and Weight Lifting (and Why It Matters)(Lifehacker)
2025/03/17 17:54:エプソン、オフィス内で使用済みの紙から再生紙を生み出す「PaperLab」に新型 (PC Watch)
2025/03/15 06:56:(DeepL:ハイパーポートチューブの中を時速400マイルで移動する輸送コンテナ)HyperPort: Moving shipping containers at nearly 400 mph through a tube(New Atlas - New Technology & Science News)
2025/03/13 02:44:(DeepL:モンスターハンターワイルドの最強武器はチャージブレード:使いこなすには?)Monster Hunter Wilds' Best Weapon Is The Charge Blade: Here's How To Master It(Kotaku)
2025/03/10 23:36:(DeepL:read timeout at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/Net/HTTP/Methods.pm line 274.)New leak brings more details about the iQOO Z10 series including the launch timeline(GSMArena.com - Latest articles)
2025/03/06 20:56:(DeepL:Wide character in HTTP request (bytes required) at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/LWP/Protocol/http.pm line 280.)Microglial mechanisms drive amyloid-β clearance in immunized patients with Alzheimer’s disease(Nature Medicine)
2025/03/03 17:36:(DeepL:read timeout at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/Net/HTTP/Methods.pm line 274.)(FierceBiotech)
2025/02/27 09:22:[企業] Merck & Coの元研究開発長Roger Perlmutter氏のEikon社が3億5070万ドル調達(BioToday.com [新着ニュース])
2025/02/27 00:42:(DeepL:read timeout at /usr/local/perl/5.32/lib/perl5/site_perl/5.32/Net/HTTP/Methods.pm line 274.)Windows 11 Pro Is Now Just $10 (95% Off), Cheaper Than a Monthly Netflix Subscription(Gizmodo)