Facebook OAuth認証 (認証なしで情報取得)

OAuthばっかりです。後にも先にもOAuthな世界ですが、これは何を意味しているのかというと単に情報取得と情報提示のルールのことなのです。で結局はそのやり取りされる情報を同時に扱うことになるので、OAuth認証を学ぶと「認証の方法」以外に「xxxを取得」とか「xxxにアクセス」とかそんな話になって結局何のこと言ってんだかわからんというのがOAuthです。OAuthを真ん中に挟んでその前後の情報のやり取りの方法論自体も含めた全体を含めてOAuthという風にだいたいのところでは解説しています。というのもその前後の情報のやり取りないと説明にならないってのもありますが...。

Facebookのユーザー情報を取得

以下のURLで皆様の公開情報が得られます。これはこの情報をただで自分のWEBアプリに引っ張ってこれることを意味しています。自分のユーザー名部分をいろいろ変えてやってみてください。返り値はjson形式で取得できます。実際この情報取得の方法はOAuth全く関係ないです。断りなく、認証なく、勝手に情報を引っ張ってきているだけです。

基本情報 https://graph.facebook.com/oosamuuy
(https://graph.facebook.com/[ユーザー名])
サムネイル https://graph.facebook.com/oosamuuy/picture
(https://graph.facebook.com/[ユーザー名]/picture)
サムネイルのパス https://graph.facebook.com/oosamuuy?fields=picture
(https://graph.facebook.com/[ユーザー名]?fields=picture)

実際にPHPで取得する方法は、jsonを取り出すだけで、json_decode()というnewしなくても使えるメソッドがございます。勝手に外に出してもあまり怒らなさそうな私の友人を適当にチョイスしています。リロードするといろいろ出てきます。Sample

<?php
$friends = array(
'kaori.nakajima.549',
'oosamuuy',
'hiroaki.ito.1232',
'yumi.sato.3551',
'shigeo.matsuda',
'jeffgecko',
'kazutakayagi',
'masumi.doeda',
'akiyuki.ishida',
'yutaff'
);
shuffle($friends);
$username = $friends[0];
print $username."<br />¥n";

$url = "https://graph.facebook.com/".$username;
$json = file_get_contents($url,true);
if ($json == false) {
print "jsonデータが取得できませんでした。";
}

$obj = json_decode($json);

$id = $obj->{'id'};
$name = $obj->{'name'};
$first_name = $obj->{'first_name'};
$last_name = $obj->{'last_name'};
$link = $obj->{'link'};
$username = $obj->{'username'};
$gender = $obj->{'gender'};
$locale = $obj->{'locale'};

$user_info = <<< EOM
<table>
<tr><td>id: </td><td>$id</td></tr>
<tr><td>name: </td><td>$name</td></tr>
<tr><td>first_name: </td><td>$first_name</td></tr>
<tr><td>last_name: </td><td>$last_name</td></tr>
<tr><td>link: </td><td><a href='$link'>$link</a></td></tr>
<tr><td>username: </td><td>$username</td></tr>
<tr><td>gender: </td><td>$gender</td></tr>
<tr><td>locale: </td><td>$locale</td></tr>
</table>
EOM;
if ($username) {
print $user_info;
}

認証なしで取得できる情報はここまでなので、このPHPコピペしてなんかすれば、それなりに何かできます。ユーザーのサムネイル取ってきたりとかいろいろできそうです。