Facebook GraphAPI を使って、Facebookのプロフィール情報を取得する方法を記載していきます。取得する項目は、facebook_id, 名前(フルネーム、苗字、名前), メールアドレス、性別、プロフィール画像を取得したいと思います。
SDK(graph-sdk)のインストール
今回の実装には、下記のSDKの利用が必須です。
https://packagist.org/packages/facebook/graph-sdk
composerでの利用が推奨されていますので、composerでインストールを行ないます。
{
"require": {
"facebook/graph-sdk": "5.7.0"
}
}
追記が終わったら、composer install でsdkのインストールをしてください。
アクセストークンの取得
プロフィール情報を取得をするために、アクセストークンを取得する必要があります。取得の方法は、下記の記事を参考にしてみてください。
https://tachitechi.com/how-to-get-an-accesstoken-using-facebook-graphapi/
プロフィール情報の取得
アクセストークンの取得までできたら、プロフィール情報の取得をします。下記のようなプログラムでプロフィール情報を取得します。
$facebookObj->setDefaultAccessToken($accessToken);
try {
$response = $facebookObj->get('/me?fields=id,name,first_name,last_name,email,gender');
$profile = $response->getGraphUser();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
}
echo 'facebook id: ' . $profile['id'];
echo 'name: ' . $profile['name'];
echo 'first_name: ' . $profile['first_name'];
echo 'last_name: ' . $profile['last_name'];
echo 'email: ' . $profile['email'];
echo 'gender: ' . $profile['gender'];
下記のコードで、取得する項目を指定できます。
今回は、facebook_id, 名前(フルネーム、苗字、名前), メールアドレス、性別を取得できるように下記を指定しました。
$response = $facebookObj->get('/me?fields=id,name,first_name,last_name,email,gender');
取得したレスポンスを、getGraphUser というメソッドを使って、profile変数にセットします。
$profile = $response->getGraphUser();
それぞれ、下記のキー名でセットされていますので、このようにすることで取得することができます。
echo 'facebook id: ' . $profile['id'];
echo 'name: ' . $profile['name'];
echo 'first_name: ' . $profile['first_name'];
echo 'last_name: ' . $profile['last_name'];
echo 'email: ' . $profile['email'];
echo 'gender: ' . $profile['gender'];
プロフィール画像の取得
プロフィール画像だけは、上記で記載したプログラムで取得できないので、別で取得します。
$facebookObj->setDefaultAccessToken($accessToken);
try {
$userPicture = $facebookObj->get('/me/picture?redirect=false&height=200');
$picture = $userPicture->getGraphUser();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
}
echo 'picture_url: ' . $picture['url'];
pictureというapiから画像を取得します。
$userPicture = $facebookObj->get('/me/picture?redirect=false&height=200');
先ほどと同様に、取得したレスポンスをgetGraphUserに渡します。
$picture = $userPicture->getGraphUser();
urlにプロフィール画像urlが入っています。
echo 'picture_url: ' . $picture['url'];