API関連
Facebook Developersでアプリを登録する。
以前使用していた時から結構インターフェースが変わったので、改めて登録方法。
https://developers.facebook.com/
にアクセスします。
上のメニューから「My Apps」を選択します。
登録済みのアプリ一覧が表示されます。
右上の「Add a New App」ボタンをクリックします。
どのアプリを作るか選択します。
今回はPage Plugin用のアプリを作りたいので、ウェブサイトを選択します。
アプリ名を入力します。
アプリ名を入力すると、下図のようになります。
Create New Facebook App IDボタンをクリックします。
カテゴリを選択して、右下の「Create App ID」ボタンをクリックします。
下図のような画面になります。
少し下に行くと、Tell us about your websiteというフィールドがあります。
Site URL と Mobile Site URLを入力し、Nextボタンをクリックします。
下図のような画面になります。
さらに下へスクロールするとフィニッシュです。
さて、このままでは、まだアプリとしては非公開状態です。
Page Pluginのコード取得時に、このアプリを選択しても
This app is in Development Mode and not available publicly.
公開モード can be enabled in the App Dashboard.
というエラーメッセージが表示されてしまいます。
公開状態にするには、まずメニューからMy Appsを選択し、登録されているアプリ一覧を表示します。
新規登録したアプリを選択します。
左メニューからSettingsを選択します。
「Basic」タブブロックの右下にある「Contact Email」にメールアドレスを入力し、「Save Changes」ボタンをクリックします。
左メニューの「Status & Review」を選択します。
上図の赤枠部分をクリックし、Yesにします。
クリックすると、下図のようにメッセージが表示されるので、承認をクリックします。
以上で、公開状態となり、使用できるようになります。
総合管理者 | 2015年04月30日 | コメント(0) | トラックバック(0) | API関連 | アプリ関連
Like Boxもうすぐ終了 Page Pluginへ乗り換え
FacebookのLike Boxも、もうすぐ終了するそうです。
FacebookのLike Boxは2015年6月23日で終了。Page Pluginに変わります
代わりに提供されている「Page Plugin」へ乗り換えます。
https://developers.facebook.com/docs/plugins/page-plugin
へアクセス。
下図のブロックで
- Facebook Page URL
- Width
- Height
- Hide Cover Photo
- Show Page Posts
- Show Friend's Faces
を設定します。
最後にGet Codeボタンをクリックして、コードを取得します。
ほぼLikeboxの時と変わりませんが、問題点として、
- Widthの最小値(280px)および最大値(500px)が決まっている。
- Heightの最小値が決まっている。
という点があります。
特にWidthの最小値・最大値が決まっているのは痛いです。
サイドバーに持ってくるにも、メインブロックに持ってくるにも何とも半端でどうしたものか。
このあたりのサイズが最近の流行なんですかね?
追記
あれ?この記事読み返してたら、いいね!も昔のコード使えなくなるみたいじゃん。
FacebookのLike Boxは2015年6月23日で終了。Page Pluginに変わります
マジかよ・・・
総合管理者 | 2015年04月30日 | コメント(0) | トラックバック(0) | API関連 | SNS関連
RSS Graffiti本日終了 dlvr.itへ乗り換え
WordPressやMovable Type、なんでもいいのですがRSSが出力できれば、それを元にFacebookへ投稿できる「RSS Graffiti」が本日、2015年4月30日をもって終了するそうです。
ということで、急いで乗り換え。
色々候補は有ったのですが、最終的に「dlvr.it」を使うことにしました。
まずは、アカウントを作成します。
右にある「Sign up」ボタンをクリックして、アカウントを作成してください。
FacebookやTwitterアカウントを持っている場合は、それでもログイン可能です。
アカウント作成、またはログインが成功すると、下図の画面になります。
How would you like to start sharing content?
左の「Start Feeding」ボタンをクリックします。
左の「Source」にフィードのURLを入力します。
Your blog or other website URLと書いてますがフィードのURLです。
例:http://www.nandani.sakura.ne.jp/feed
ラジオボタンでは、次からの投稿を反映させたい場合は、「Wait until a new item is posted.」を選択してください。
URLの入力が成功すると、自動的に正常なURLかどうかを判断して、右の「Choose a Destination」のボタンを選択できるようになります。
今回はFacebookへの投稿なので、Facebookボタンをクリックします。
Facebookログイン画面がポップアップウィンドウで開きますので、Facebookへログインしてください。(すでにFacebookへログインしている場合は、次へ)
一番最初の登録の場合、dlvr.itからFacebookへのアクセスを許可してよいかという画面が開きますが、許可していってください。
最終的に下図の画面になります。
プルダウンで、どのタイムラインに投稿するかを選択してください。
Facebookページの権限を持っている場合は、それも選択可能です。
プルダウンを選択したら「Continue」ボタンをクリックしてください。
最後の画面になります。
右下の「Done」を選択してください。
登録が成功すると、下図のメッセージが開きます。
以上が最初の登録です。
2回目以降の新規登録
2回目以降の新規登録は左上の「+ Add Route」ボタンから登録します。
微妙にインターフェースが変わりますが、やることはほぼ同じです。
左の「Source」の「+ Add」ボタンをクリックします。
フィードボタンをクリックします。
Feed URLを入力し、どのタイミングからタイムラインに投稿するかをプルダウンで選択します。
「save source」ボタンをクリックします。
続いて右の「Destinations」の「+Add」ボタンをクリックします。
「Facebook」ボタンをクリックします。
「Connect to Facebook」ボタンをクリックします。
※ログイン中の場合は、自動的にログインしているFacebookのアカウントで上記の画面となります。
プルダウンで投稿先タイムラインを選択し、「Continue」ボタンをクリックします。
最後に「Save」します。
同じタイムラインに複数のフィードを登録する場合
同じタイムラインに複数フィードを登録する場合は、すでに登録済みの「Source」の「+Add」から片側のみを登録します。
複数登録されるとこんな感じになります。
総合管理者 | 2015年04月30日 | コメント(0) | トラックバック(0) | API関連 | SNS関連
Facebookページのタイムラインを取得する方法
Facebookページのタイムラインを取得する方法のメモ。
タイムラインは以前紹介したアルバムや写真を取得する方法よりも、ひと手間かかります。(アクセストークンを取得する必要があるため)
プログラムは下記の通り。
<?php /* facebookページのタイムラインを取得する */ $facebook_page_id = '...'; //FacebookページのID $access_token = '...'; //アクセストークン $url = "https://graph.facebook.com/".$facebook_page_id."/feed?access_token=".$access_token; $res = file_get_contents($url); $data_array = json_decode($res, TRUE); if(!empty($data_array["data"])){ print_r($data_array["data"]); } ?>
○「$facebook_page_id」には、FacebookページのIDを代入してください。
IDはFacebookページを開いたときのURL「https://www.facebook.com/〇〇〇〇」の○○○○部分か、もしくは「https://www.facebook.com/pages/□□□□/○○○○?ref=hl」の○○○○部分。
※前者の例
https://www.facebook.com/FacebookJapan
の場合は「FacebookJapan」
※後者の例
https://www.facebook.com/pages/ダリの雑記/12345678901234567?ref=hl
の場合は「12345678901234567」(こんなURLはありませんがw)
○「$access_token」には、アクセストークンを代入します。
アクセストークンの取得方法は、以下の通り。
- https://developers.facebook.com/apps にアクセスし、「新しいアプリを作成」からアプリを作成します。(アプリ作成と言っても、ほぼアプリ名を重複しないように決めるだけ)
- アプリを作成すると、基本設定画面にて「App ID」と「App Secret」が取得できます。
- 「App ID」と「App Secret」を下記のURLに代入し、アクセスします。
https://graph.facebook.com/oauth/access_token?client_id=(App ID)&client_secret=(App Secret)&grant_type=client_credentials - アクセスすると、
という風に表示されます。これがアクセストークンです。
この値を「$access_token」に代入してください。
以上の2つを代入後、PHPを実行してください。
う~む。そのうちアルバムや写真もアクセストークンが必要になるのかな?
参考サイト
nandani | 2013年10月22日 | コメント(0) | トラックバック(0) | API関連 | PHP関連
get_postsで取得したデータでも、ショートコードを実行する【WordPress】
メモ。
the_content()で表示した「内容」ならば自動的にショートコードが実行されるのですが、get_postsで取得した記事の「内容(例えば$hoge->post_content)」では、ショートコードが実行されません。
そのままショートコードが表示されてしまいます。
そういう場合は、do_shortcode関数を使用しましょう。
do_shortcode($hoge->post_content);
これで、内容中に含まれるショートコードが実行されるようになります。
なお、get_the_content()でも同様にショートコードが実行されませんので同じく
do_shortcode(get_the_content());
としてください。
参考サイト
nandani | 2013年06月21日 | コメント(0) | トラックバック(1) | API関連 | CMS関連
PHPで自分のつぶやきを取得する方法【API1.1】
やり方についてはほぼこちらのサイトを参考にしています。
PHP+OAuthでTwitter - SDN Project
- twitteroauthをダウンロードします。
- アプリ登録を行います。
登録が完了するとアプリケーションの詳細画面になります。
そこで「Consumer key」と「Consumer secret」が表示されますのでメモします。 - アプリケーション画面の下の方にある「Create my access token」ボタンをクリックします。
処理後、ボタンの上の方に「Access token」と「Access token secret」が表示されますのでメモします。 - 下記のプログラムで自分のつぶやきを取得します。
<?php //1.でダウンロードしたtwitteroauth.phpをinclude require_once('./twitteroauth/twitteroauth.php'); //2.3.で取得した各キーを入力 $consumer_key = 'Consumer key'; $consumer_secret = 'Consumer secret'; $access_token = 'Access token'; $access_token_secret = 'Access token secret'; // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret); // user_timelineの取得。TwitterからXML形式が返ってくる $req = $to->OAuthRequest("https://api.twitter.com/1.1/statuses/user_timeline.json","GET",array("q"=>"dari_zakki", "count"=>"10")); // Twitterから返されたJSONをデコードする $results = json_decode($req); echo '<ul>'; foreach($results as $value){ echo '<li>'; echo '<img src="'.$value->user->profile_image_url.'" /><br />'; echo $value->text.'<br />'; echo $value->user->name.'<br />'; echo date("Y-m-d H:i:s", strtotime($value->created_at)); echo '</li>'; } echo '</ul>'; ?>
これで自分がつぶやいたタイムラインを取得できます。
前に比べるとめんどくさくなりましたね。
まあ前が緩すぎたって話ではあるんですが^^;
参考サイト
nandani | 2013年06月20日 | コメント(0) | トラックバック(0) | API関連 | PHP関連
TwitterのAPIの仕様変更
Twitterのタイムラインを
http://twitter.com/statuses/user_timeline.xml?id=(アカウント名)
でデータ取得していたのですが、仕様変更に伴い上記では取得できなくなったです。
調べたところ、URLにバージョン情報を含まないといけなくなったみたい。
以降は
http://api.twitter.com/1/statuses/user_timeline.xml?id=(アカウント名)
で取得するようにしましょう。
参考サイト
Twitter APIの仕様変更によってあちこちのアプリでエラーが出てるみたいなので、その対処方法の話。 » とりあえず9JP
Twitter REST APIでタイムラインを取得して、Twitter-text-phpでアンカー表示 | はるる*Weblog
nandani | 2012年10月15日 | コメント(0) | トラックバック(0) | API関連 | PHP関連
ちょ!?Facebookボタンがえらいことに
たった今気づいたんですが、Facebookボタンの表示がかなりおかしなことになってます。
ログアウトしている状態なら普通なんですが、ログインしているとこんな感じ
なんじゃこりゃ~!!
と思ったら、どうやらFirefox3.6系だけみたい。
そろそろ3.6系も潮時かな・・・
↑間違いでした。
Facebookページとしてログインしていると(Facebookページの管理者権限を持っているユーザでFacebookにログインし、そのFacebookページにアクセスしている状態)どのブラウザでもなるようです。
nandani | 2012年01月14日 | コメント(2) | トラックバック(0) | API関連
Facebookページにある"すべての"アルバムの写真をPHPで取得する方法
前回は特定のアルバムのみの写真を取得する方法を記述しました。
今度はFacebookページにあるすべてのアルバムの写真を取得する方法です。
必要なのはPHP5.2以上が動作するサーバ環境(json_decodeがいるので)と、そのFacebookページのID情報です。
ためしにFacebook Japanの公式Facebookページにあるすべてのアルバムの写真情報を取得し、写真を一覧表示します。
まずFacebookページIDですが、前回同様「Facebookスポット」アルバムページのURLをご覧ください。
http://www.facebook.com/media/set/?set=a.428510844023.214836.365989369023&type=3
今度は最後の「.」から「&type=3」までにある数字を取得してください。
つまり「365989369023」です。
これがFacebookIDです。
これを以下のサンプルプログラムの中にある「$fbpage_id」変数に代入します。
$fbpage_id = '365989369023'; //FacebookページID $thumb_size_set = 3; //サムネイルのサイズ //アルバム情報を取得する $albums_url = "http://graph.facebook.com/".$fbpage_id."/albums/"; $albums_res = file_get_contents($albums_url); $albums_array = json_decode($albums_res, TRUE); if(!empty($albums_array["data"])){ foreach($albums_array["data"] as $albums_values){ //アルバム内の写真情報を取得する $album_id = $albums_values["id"]; $photos_url = "http://graph.facebook.com/".$album_id."/photos/"; $photos_res = file_get_contents($photos_url); $photos_array = json_decode($photos_res, TRUE); if(!empty($photos_array["data"])){ $albums_link = $albums_values["link"]; $albums_name = $albums_values["name"]; echo '<h2><a href="'.$albums_link.'" target="_blank">'.$albums_name.'</a></h2>'."\r\n"; foreach($photos_array["data"] as $photos_values){ $thumb_size_count = count($photos_values["images"]); for($i=$thumb_size_set; $i > 0; $i--){ if($thumb_size_count > $i){ $thumb_size = $thumb_size_count - $i; break; } } $photo_name = $photos_values["name"]; $photo_path = $photos_values["link"]; $photo_thumb_path = $photos_values["images"][$thumb_size]["source"]; $photo_thumb_width = $photos_values["images"][$thumb_size]["width"]; $photo_thumb_height = $photos_values["images"][$thumb_size]["height"]; echo '<p><a href="'.$photo_path.'" target="_blank"><img src="'.$photo_thumb_path.'" width="'.$photo_thumb_width.'" height="'.$photo_thumb_height.'" alt="'.$photo_name.'" /></a></p>'."\r\n"; } } } }
なお、結構表示まで時間がかかります。
nandani | 2011年12月14日 | コメント(5) | トラックバック(1) | API関連 | PHP関連
Facebookページにある"特定の"アルバムの写真をPHPで取得する方法
Facebookページを見ると、左のメニューに「写真」という項目があるページをよく見かけます。
その名の通り、アルバムごとに写真をアップし、公開することができるわけですが、このアルバムの写真情報をPHPで取得することができます。
必要なのはPHP5.2以上が動作するサーバ環境(json_decodeがいるので)と、そのアルバムのID情報です。
ためしにFacebook Japanの公式Facebookページにある、アルバム「Facebookスポット」の写真情報を取得し、写真を一覧表示します。
まずアルバムIDですが、「Facebookスポット」アルバムページのURLをご覧ください。
http://www.facebook.com/media/set/?set=a.428510844023.214836.365989369023&type=3
というURLになっています。
いくつか数字の羅列が並んでいますが、必要なのは「a.」から次の「.」までの数字。
つまり「428510844023」です。
これを以下のサンプルプログラムの中にある「$album_id」変数に代入します。
$album_id = '428510844023'; //アルバムID $thumb_size_set = 3; //サムネイルのサイズ $limit=0; //取得したい最大枚数(0とするとデフォルト設定の25枚) $url = "http://graph.facebook.com/".$album_id."/photos/?limit=".$limit; $res = file_get_contents($url); $data_array = json_decode($res, TRUE); if(!empty($data_array["data"])){ foreach($data_array["data"] as $values){ $thumb_size_count = count($values["images"]); for($i=$thumb_size_set; $i > 0; $i--){ if($thumb_size_count > $i){ $thumb_size = $thumb_size_count - $i; break; } } $photo_name = $values["name"]; $photo_link = $values["link"]; $photo_thumb_path = $values["images"][$thumb_size]["source"]; $photo_thumb_width = $values["images"][$thumb_size]["width"]; $photo_thumb_height = $values["images"][$thumb_size]["height"]; echo '<p><a href="'.$photo_link.'"><img src="'.$photo_thumb_path.'" width="'.$photo_thumb_width.'" height="'.$photo_thumb_height.'" alt="'.$photo_name.'" /></a></p>'; } }
もちろん閲覧者がFacebookにログインする必要はありません。
非常に簡単ですね。
※枚数が多くなると重くなるので、キャッシュを取るなどの対策をすることをお勧めします。
参考にさせていただいたサイト
nandani | 2011年12月14日 | コメント(4) | トラックバック(1) | API関連 | PHP関連