2014-01-24 3 views
0

Я пытаюсь получить доступ к электронной почте пользователя с помощью Facebook PHP SDK V 3.2.3Получить письмо от Facebook пользователя

Код:

<?php 


require_once('facebook-php-sdk/src/facebook.php'); 
// Create our Application instance (replace this with your appId and secret). 
$facebook= new Facebook(array(
    'appId' => 'xxxxxxx', 
     'secret' => 'xxxxxxxxxxxxxxx', 
     'allowSignedRequest' => false, 
)); 

$_REQUEST += $_GET; 
$user = $facebook->getUser(); 

if ($user) { 
    try { 

$login_url = $facebook->getLoginUrl(array(
    'req_perms' => 'email' 
)); 
    echo 'Please <a href="' . $login_url . '">login.</a>'; 

    $user_profile = $facebook->api('/me?fields=picture.width(100).height(100),first_name,last_name,username,email'); 
    echo $user_profile['email']; 
    echo $user_profile['username']; 

    } catch (FacebookApiException $e) { 
    $user = null; 
    } 
} else { 
    die('<script>top.location.href="'.$facebook->getLoginUrl().'";</script>'); 
} 

?> 

Я попытался выше, но это не так Работа. Я пробовал получать разрешающие разрешения через логин, но не повезло, не уверен, что я сделал это правильно.

Я получаю сообщение об ошибке «Undefined index: email».

Как исправить это?

+0

Прошу вас просто взглянуть на http://www.fbrell.com/examples/. Вы получите представление. –

+0

Вы уверены, что функция $ facebook-> api() возвращает формат массива()? попробуйте echo var_dump ($ user_profile), чтобы проверить ваш результат – har2vey

+0

@ har2vey Хорошо, когда я пытаюсь повторить другие поля, такие как имя пользователя, он отлично работает. Я знаю, что это проблема с правами доступа к электронной почте, потому что письмо появляется в локальном хосте. – Tester

ответ

0

Чтобы указать необходимые разрешения, необходимо передать их в массив, переданный функции getLoginUrl, с помощью клавиши scope.

$login_url = $facebook->getLoginUrl(array(
    'scope' => 'email' 
));