2016-05-24 20 views
0

私はFacebookログインボタンを有効にしたFacebook Connect APIを統合したphpのウェブサイトで作業しています。Facebook Connect API:ユーザーのメールを取得

ユーザの詳細情報を取得するための私のコードは次のようになります。

<?php 
    session_start(); 

    // added in v4.0.0 
    require_once 'autoload.php'; 
    use Facebook\FacebookSession; 
    use Facebook\FacebookRedirectLoginHelper; 
    use Facebook\FacebookRequest; 
    use Facebook\FacebookResponse; 
    use Facebook\FacebookSDKException; 
    use Facebook\FacebookRequestException; 
    use Facebook\FacebookAuthorizationException; 
    use Facebook\GraphObject; 
    use Facebook\GraphUser; 
    use Facebook\Entities\AccessToken; 
    use Facebook\HttpClients\FacebookCurlHttpClient; 
    use Facebook\HttpClients\FacebookHttpable; 

    // init app with app id and secret 
    $appID = 'app id'; 
    $appSecret = 'app secret code'; 
    FacebookSession::setDefaultApplication($appID, $appSecret); 

    // login helper with redirect_uri 
    $helper = new FacebookRedirectLoginHelper('http://localhost/test/facebook_new/fbconfig.php'); 

    try { 
     $session = $helper->getSessionFromRedirect(); 
    } catch(FacebookRequestException $ex) { 
     // When Facebook returns an error 
    } catch(Exception $ex) { 
     // When validation fails or other local issues 
    } 

    // see if we have a session 
    if (isset($session)) { 

     // graph api request for user data 
     $request = new FacebookRequest($session, 'GET', '/me'); 
     $response = $request->execute(); 

     // get response 
     $profile = $response->getGraphObject('Facebook\GraphUser'); 

     var_dump($profile); 

    } else { 
     $loginUrl = $helper->getLoginUrl(); 
     header("Location: ".$loginUrl); 
    } 
?> 

このコードは、eecuting後var_dump($profile)のみが表示さUser Facebook IDと下の画像に表示されているように、彼Full Name

Image showing the result

私が得たいのは電子メールです。電子メールは'Facebook\GraphUser'からアクセスできますが、私のコードで何が間違っているのかは分かりません。

答えて

2

$request = new FacebookRequest($session, 'GET', '/me?fields=name,email');

それは、「宣言フィールド」と呼ばれ、あなたがグラフAPIのV2.4以降返さ取得したいフィールドを指定する必要があります。

また、ユーザーがemail権限を持っていることを確認してください。

1

Facebookのユーザーは、自分のメールアドレスをプライベートまたはパブリックとして設定できます。これはあなたのために現れない理由かもしれません。

関連する問題