2016-08-09 2 views
0

Ich habe gefolgt gerade diese Anleitung von Facebook: https://developers.facebook.com/docs/php/gettingstartedFacebook 2.5 Graph api nicht Rückkehr der Benutzer E-Mail

ich von einer älteren Version der Facebook php sdk bin ein Upgrade.

Nachdem ich erfolgreich einen Benutzer mit sehr wenig Schmerzen aktualisiert und authentifiziert habe, habe ich anscheinend eine Ziegelmauer getroffen.

Gemäß ihren Anweisungen habe ich die $ Berechtigungen auf ein Array, um nur die 1 Zeichenfolge, E-Mail enthalten. Die E-Mail wird jedoch nicht zurückgegeben. Ich erhalte nur die Facebook-ID und den Benutzernamen.

Wie kann ich die Benutzer email vom neuen facebook php sdk v2.5 erhalten?

Dies ist der Code vor der Umleitung der gut arbeitet:

$facebook = new \Facebook\Facebook($config); 
$helper = $facebook->getRedirectLoginHelper(); 
$loginUrl = $helper->getLoginUrl($_WEBROOT .'/authenticate_facebook.php', ['email']); 

Dies ist der Code, der die Antwort behandelt, die funktioniert, außer ich nicht sehen kann, wie die E-Mail erhalten:

$facebook = new \Facebook\Facebook($config); 
$helper = $facebook->getRedirectLoginHelper(); 

$accessToken = false; 

try { 
    $accessToken = $helper->getAccessToken(); 
} catch(\Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
} catch(\Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    exit; 
} 

//if we don't have an access token redirect the user to the login page 
if (!$accessToken) { 
    \Controller::redirectTo('/login?facebook-login-error'); 
} 

// Sets the default fallback access token so we don't have to pass it to each request 
$facebook->setDefaultAccessToken($accessToken); 

try { 
    $response = $facebook->get('/me'); 
} catch(\Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    \Controller::redirectTo('/login?facebook-login-error'); 
} catch(\Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    \Controller::redirectTo('/login?facebook-login-error'); 
} 

print_r($response->getDecodedBody()); 
die(); 

Das Ergebnis der letzten print_r ist nur:

Array ([name] => Bob Smith [id] => 5995599559) 

Die aktuelle Anwendung ist dies in r equires die E-Mail-Adresse:/und es zu bekommen in V2.0

Antwort

0
 $response = $facebook->get('/me?fields=email,name'); 

OK. Der Guide auf Facebook erwähnt das nirgends, was ich sehen könnte.

Aber durch Hinzufügen von? Felder = E-Mail, Name bis zum Ende der Get URL funktionierte.

Der Antworttext enthält nun die erforderlichen Felder

+0

im Changelog erwähnt, https://developers.facebook.com/docs/apps/changelog#v2_4_changes, und das Kapitel zu dem grundlegenden API-Nutzung, https: // developers.facebook.com/docs/graph-api/using-graph-api/#fields – CBroe

+0

ja sicher, dass es hier erwähnt wird ... aber nirgendwo im php sdk Beispiel erwähnte es es. – John