注目キーワード
  1. 技術
  2. 広告
  3. IDFA
  4. PHP
  5. WordPress

【PHP】Facebook GraphAPI を利用して、Facebookのプロフィール情報を取得する

SNS

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'];