PHP関連

PHPを用いてFacebookにログインしているユーザの基本情報を取得する方法【Facebook】

メモ。主に解説サイトの紹介。

なんとなく分かりづらいタイトルですが、自分が今Facebookにログインしているとして、とあるサイトにアクセスしたときに、自分の基本データが収集される・・・あれ?何かすごい恐ろしいこと書いているような・・・^^;

まあ何のために取得するかというと、サイト運営者それぞれに理由があると思いますが、信頼できるユーザかどうか(スパムではないかという意味)を調べたり、二重投稿などを防ぐために必要だったりします。

この基本データというのはいわゆる「プロフィール」なので、Facebookにログインしている状態ならば誰でも見れるものではあるのですが、とはいえ勝手に収集されてはかないません。

というわけで、当然ながら勝手に情報を収集できるわけがなく、そのサイトがユーザの基本データを得るには、訪れたユーザに「取得しても別にいいよ」と許可してもらう必要があります。

↓許可画面はこんな感じ

ここで「許可する」ボタンが押されると、そのサイトは許可したユーザの基本データを取得できるようになります。

では、ユーザの基本データを取得するアプリの開発方法を記したサイトのご紹介です。

 

※事前に「アプリケーションID」や「アプリの秘訣」を取得するために、facebook DEVELOPERSページの「アプリ」画面にて、これ専用のアプリを新規作成しておいてください。またアプリを作成するにはディベロッパー登録を行う必要があります。未登録の方はこちらのサイトを参考に登録してください。分かりやすく手順を書いてくださっています。

Facebook 開発者登録 - ネットショップサポート[PBsupport 門戸開放塾]

 

設置時ちょっとはまってしまったこと

設置直後「アプリの許可」画面を開こうとすると以下のようなエラー画面が出てしまいました。

○エラー内容

API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: Invalid redirect_uri: 指定されたURLは、アプリケーションの設定で許可されていません。

これはアプリ作成時にWebsiteを設定していないためです。

1.facebook DEVELOPERSページの「アプリ」画面を開いてください。

2.データ取得で使用するアプリを選択し、「設定」の「Edit Settings」をクリックしてください。

3.「Website」にデータ取得プログラムを設置しているホームページのURLとドメインを入力してください。

これで正常に「アプリの許可」画面が開くようになります。

nandani | 2011年08月20日 | コメント(0) | トラックバック(5) | API関連 | PHP関連 | SNS関連

FQLで特定のページの「いいね!」ボタンが押された回数などを取得する方法【Facebook】

FQLで特定のページの「いいね!」ボタンが押された回数などを取得する方法です。

PHPを用いるとこんな感じ。


$target_url = "http://www.yahoo.co.jp"; //データを取得したいページのURL

$select = 'SELECT like_count, total_count, share_count, click_count FROM link_stat WHERE url="'.$target_url.'"';
$select = urlencode($select);
$fb_url = "http://api.facebook.com/method/fql.query?query=".$select;
$res = file_get_contents($fb_url);
echo $res;

$target_urlの変数にデータを取得したいページのURLを入れてください。

実行結果(XML形式で表示されます。)

■参考サイト

Facebookの「いいね!」ボタンが押された回数を取得する方法 - でぶぬる日記

fql.query - Facebook開発者

nandani | 2011年08月20日 | コメント(0) | トラックバック(2) | API関連 | PHP関連 | SNS関連

マップ表示用スクリプトをバージョンアップしました[バージョン1.4b2]

マップ表示用スクリプト(GoogleマップAPI v3で地図とマーカー・バルーンを表示するスクリプト)を少しバージョンアップ(version1.4b2)しました。(ダウンロードはこちら

version1.4bからの変更点は内部処理のみなので、差し替えるだけで動作します。

■使い方はこちら:マーカー個別版マーカー複数板

■主な変更箇所

  • マーカー複数版で使用する際、住所1件ごとに「get_coord.php」にアクセスすると効率悪そうなので、まとめてアクセスする仕様に変更しました。
    これにより表示速度が速くなりました。
    比較:v1.4b (旧)v1.4b2 (新) ※ただしすでにキャッシュがとられている場合の比較です。
  • Firefoxでは「nth-child」が意図通りの挙動にならないため、ブラウザごとに動作を分けました。(「アドレス」と「座標」をミックスしている時にFirefoxで不具合が起きていたため)
  • 住所や座標の記述に半角スペースや改行コード、HTMLタグが入っていると不具合起きそうなので、座標取得時は取り除くようにしました。

 

半角スペースを取り除くための関数はこちらのサイトのプログラムを使わせていただきました。

浮浪プログラマの始末書さんのサイト

さくらインターネットでPDFをJPEGに変換【PHP】

さくらインターネットのレンタルサーバ上でPDFをJPEGに変換する方法です。

変換にはImageMagickを用います。

さくらインターネットにはImageMagickがインストールされているのですが、PHPには組み込まれておらず、phpinfoを見ても見当たりません。

しかしインストールされているのは確実なので、system関数を用い、ImageMagickのコマンドを実行すれば使用できます。

なお、ImageMagickのパスは「/usr/local/bin/」です。

<?php
system("/usr/local/bin/convert sample.pdf sample.jpg");
?>

system("/usr/local/bin/convert PDFファイルのパス 出力するJPEGのパス");

もし、PDFファイル(ここでは「sample.pdf」)が複数ページある場合は、

  • sample-0.jpg
  • sample-1.jpg
  • sample-2.jpg
    ・・・

というふうに、自動的に連番がついたファイル名で出力されます。

nandani | 2011年06月20日 | コメント(0) | トラックバック(0) | PHP関連

Syntax Highlighter for WordPressがうまく表示されない場合

記事内のソースをきれいに表示したいなぁと思い、「Syntax Highlighter for WordPress」を入れてみました。

ダウンロードサイト

しかし全然うまく表示されない!

いろいろと調べた結果。

<?php wp_head(); ?>

<?php wp_footer(); ?>

の2つが不可欠とのこと。

それぞれをテンプレートのヘッド部分とフット部分に埋め込んだところ正常に表示されるようになりました。

自分でテンプレートをカスタマイズしている方は気を付けましょう。

なお、使い方については

WordPress Plugins/JSeries   &raquo; Syntax Highlighter for WordPress (ソース整形表示)

Syntax Highlighter for WordPress を導入 | 暇人じゃない

を参考にさせていただきました。

nandani | 2011年05月21日 | コメント(0) | トラックバック(1) | PHP関連

phpThumb()でサムネイル生成

imgタグ単位でサムネイルを自動生成してくれる便利なプログラム「php Thumb()」(ダウンロードサイトはこちら)。

このプログラムを使用する上でつまったことがあるのでメモっておきます。

 

まずどのように使用するかというと、

  1. ダウンロードしてきた「phpThumb_xxx.zip」を解凍します。
  2. 「phpThumb_xxx」というフォルダが出来るので、「phpThumb」と名前を変更し、そのフォルダを丸ごとサーバにアップロードします。
  3. サムネイルを表示したいimgタグを以下のように記述します。(「phpThumb」フォルダはウェブルートにアップロードしたと想定しています。)
<img src="http://ドメイン/phpThumb/phpThumb.php?src=サムネイルにしたい元画像のパス&w=100&h=100&zc=1&q=100" />

これで、この記述がされているページへブラウザからアクセスすると、自動的にサムネイルが生成され、以降はその生成されたサムネイルを表示するようになります。(一番最初にアクセスされたときはサムネイルを生成するため少し画像の表示に時間がかかります。)

ちなみに引数については以下の通りです。

  • src:サムネイルにしたい元画像のパス
  • w:幅
  • h:高さ
  • zc:トリミングのオン・オフ
  • q:クオリティ(0~100)

 

で、どこでつまったのかというと、「サムネイルにしたい元画像のパス」

ここをhttpから始まるURLにしているとエラーが帰ってきて動作しません。

なんでこんな仕様なんだろう?と思ったんですが、他の色々なサイト(たとえばこちら)を見て「そりゃそうか」と納得しました。つまり外部のサイトであっても画像を引っ張ってきてサムネイル化してしまうことが可能となってしまうわけです。

別にimgタグに埋め込まなくても

http://ドメイン/phpThumb/phpThumb.php?src=サムネイルにしたい元画像のパス&w=100&h=100&zc=1&q=100

とアドレスバーに打ち込めばサムネイル画像がキャッシュとして生成されてしまうわけですから、いたずらで外部サイトからとんでも画像を引っ張ってこられた日には・・・ガクガク(((( ;゚Д゚))))ブルブル

というわけで、「サムネイルにしたい元画像のパス」に記述する場合は相対パス、もしくは「/images/hoge.jpg」という風にスラッシュからはじめるパスにしましょう。

そもそも、phpThumb.phpへダイレクトにアクセスでき、それによるサムネイル生成が可能なことに問題があるので、htaccessを使用してダイレクトアクセスならびに外部からのリンクをつなげなくしたほうが良いでしょう。

.htaccessの記述方法はこんな感じ。

<Files ~ "phpThumb.php">
SetEnvIf Referer "^http://ドメイン/" ref_ok
order deny,allow
deny from all
allow from env=ref_ok
</Files>

これをphpThumbフォルダにアップすれば、phpThumb.phpにダイレクトアクセスおよび外部からのリンクができなくなります。

 

さて、話を「サムネイルにしたい元画像のパス」に戻しまして、問題になるのがCMSとの連携(まあ、そもそもphpThumbは記述方法がちょっとめんどくさいので、CMSと連携させないとあんまり利用しないと思うんですが)。

MTはデフォルトでサムネイルを生成できるタグ(<$MTAssetThumbnailLink$>または<$MTAssetThumbnailURL$>)があるのでこれを使用する必要は無いと思います。

でもたとえばWordPressの場合、(Custom Field GUI Utilityで設定した)画像用のカスタムフィールドに画像を投稿したとして、保存される画像へのパスはhttpから始まるURLとなってしまいます。

これをそのままphpThumbのsrcに放り込むと当然エラーが帰ってくるわけで、正常に表示させるにはひと手間必要となります。
※以下の記述は「Custom Field GUI Utility ver3.1」を使用したカスタムフィールドに、画像を投稿した場合と想定しています。(「hoge」はそのフィールド名)

<?php
$imagefield = get_imagefield('hoge');
$image_src_array = parse_url($imagefield['url']);
$image_src = $image_src_array["path"];
?>

<img src="http://ドメイン/phpThumb/phpThumb.php?src=<?php echo $image_src; ?>&w=100&h=100&zc=1&q=100" />

parse_urlはURLの構築要素を分解して配列に格納してくれる関数です。くわしくはこちら

これでウェブルートからのパスをsrcに放り込むことが出来ます。

 

参考サイト

nandani | 2011年05月21日 | コメント(0) | トラックバック(0) | PHP関連

GoogleマップAPI v3で地図とマーカー・バルーンを表示(個別版) version1.4b

2012.06.30 バージョンアップしました。(version1.4b4)

2011.11.11 バージョンアップしました。(version1.4b3)

2011.08.13 バージョンアップしました。(version1.4b2)


複数版同様、個別版でも、住所から取得した座標はサーバーにキャッシュ(CSV形式)として残す仕様となりました。

スクリプトをダウンロードする

サンプルを見る

 

注意点

今回のバージョンではPHPも使用しております。もしPHP5.2以上が利用できないサーバをご利用の場合は、申し訳ございませんが、このバージョンは使用しないでください。

またサーバのPHPの設定(php.ini)で「allow_url_fopen」が有効になっていないと利用できませんので、こちらもご注意ください。

なお、PHPを使用するといっても、AJAXリクエストで実行させているだけなので、実際にマップを表示するページをPHP化させる必要はありません。

※作った直後でまだ十分な実験を行えていないので、このバージョンを使用する際は、よく動作をご確認の上、ご利用ください。

※現在ではv3でもAPIキーが必要となっています。
https://developers.google.com/maps?hl=ja

(さらに…)

GoogleマップAPI v3で地図とマーカー・バルーンを表示(複数版) version1.4b

【追記】

2012.06.30 バージョンアップしました。(version1.4b4)

2011.11.11 バージョンアップしました。(version1.4b3)

2011.08.13 バージョンアップしました。(version1.4b2)


ここから本文

バージョン1.3で見つかった、「geocoder.geocodeを使用した住所からの座標取得は、一度に取得できる件数に制限がある」という問題に対して、修正を行ったバージョンをアップロードしました。

スクリプトをダウンロードする

サンプルを見る

 

注意点

今回のバージョンではPHPも使用しております。もしPHP5.2以上が利用できないサーバをご利用の場合は、申し訳ございませんが、このバージョンは使用しないでください。

またサーバのPHPの設定(php.ini)で「allow_url_fopen」が有効になっていないと利用できませんので、こちらもご注意ください。

なお、PHPを使用するといっても、AJAXリクエストで実行させているだけなので、実際にマップを表示するページをPHP化させる必要はありません。

※作った直後でまだ十分な実験を行えていないので、このバージョンを使用する際は、よく動作をご確認の上、ご利用ください。

※現在ではv3でもAPIキーが必要となっています。
https://developers.google.com/maps?hl=ja

(さらに…)

PHPカンファレス関西がUSTREAMで配信中

2011年4月2日(土)12:00現在、大阪にて関西初のPHPカンファレスが行われています。(午前は終了。午後は13:15~16:30までです。)

しかし、実際に会場へは行っていませんw
このイベントはUSTREAMでリアルタイム中継されているので、それで見ています。
http://phpcon.php.gr.jp/kansai/

午前中は音が出なかったり途切れたり不安定でしたが、後半はかなり安定してきました。

内容の感想はひとまず置いておいて、USTREAMでこうしたイベント見るのは初めてなんですが、かなり良いですね。

まず、音声。専用マイクから拾った音を配信しているので、声がクリアに聞こえます。ボリュームもPC側で調整できますしね。

そして何よりよいのが映像。もちろん高画質とかそういう意味ではなく、パワーポイントなどの表示を、PCで表示しているものをそのまま配信しているので、すごく見やすい。


画面はこんな感じ。

たまに前の席が埋まって後ろの方を陣取ってしまったときなどは、目が悪いため文字が見えなくなるんですが、USTREAMではそうした問題点が解消されます。
小さい文字でも常識の範囲内の小ささなら読めますし。

あと、わからないワードなどをすぐにググれるのがいいですね。やっぱり専門的なイベントですし、知らない用語が出てくるときがあります。そうした場合は別のブラウザ立ち上げて検索、なるほど!となるわけです。まあ最近はノートパソコン持ち込んでる人も多いですからそういう方はイベント会場にいても同じ事ができますけどね。

もちろん、実際参加した方が質問などもできるし、他の方の質問でもそのやり取りが聞けるし(今回、質疑応答中などは配信されませんでした。残念)、交流を深められるというメリットがありますが、勉強するだけならUSTREAM配信版でも十分な感じです。

nandani | 2011年04月02日 | コメント(0) | トラックバック(0) | PHP関連

検索結果をPHP化【MT】

MTでは、テンプレートをPHP化してパーツに分けるとメンテナンスしやすいし、出来ることの幅が広がるし、何より再構築時の高速化が図れて便利です。

しかしこの場合、困るのが検索結果などのシステムテンプレート。

これはcgiで使用されるため、PHPを記述してもそのPHPは動作しません。

どうしたもんかなぁ・・・と悩んでいたところ、やはりそのように考える方はいらっしゃるようで、検索結果でもPHP化できるプラグインが開発されてました。

プラグインのダウンロードは、毎度お世話になっている「The blog of H.Fujimoto」さんのサイトから。

コメント/検索関連テンプレートのPHP化(その1) - The blog of H.Fujimoto

くわしい設置方法はこちらのサイトを参考にしました。

タグ検索結果をPHP化してURLを変更する/Movable Type4 - SANRIDE STUDIO blog | WEBデザイン&コンサルティング

nandani | 2011年03月01日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連

Copyright(c) 2010 - 2024 ダリの雑記