Разрешение на получение электронной почты пользователя с Facebook PHP SDK

#php #facebook-graph-api #facebook-php-sdk

#php #facebook-graph-api #facebook-php-sdk

Вопрос:

У меня есть рабочая интеграция с facebok api через PHP SDK и рабочий логин. Теперь я попытался добавить разрешение и для электронной почты с помощью следующего кода, но при попытке подключиться / войти в приложение электронная почта не запрашивается.

 // login or logout url will be needed depending on current user state.
if ($me) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array(
    'req_perms' => 'email',
  ));
}
  

Ошибка, должно быть, в этом коде, поскольку все остальное работает нормально. Спасибо!

Комментарии:

1. Есть ли у кого-нибудь опыт работы с этим?

Ответ №1:

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

Это должен быть URL для входа в систему

 <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
  

также необходимо передать дополнительное разрешение переменной scope

   $loginUrl = $facebook->getLoginUrl(array(
   'scope' => 'email, user_activities '
 ));
  

для получения дополнительных разрешений, пожалуйста, посетите:

http://developers.facebook.com/docs/authentication/permissions/#user_friends_perms

Ответ №2:

Это должно работать с PHP SDK:

 header('Location:'.$facebook->getLoginUrl(array(
    'scope' => 'email'
)));
exit;
  

Ответ №3:

Удалите запятую после ’email’ и перенаправьте браузер на $ loginUrl, вот так:

 $loginUrl = $facebook->getLoginUrl(
  array(
    'req_perms' => 'email'
  )
);

echo '<script>top.location="'.$loginUrl.'";</script>';
die();
  

Редактировать

Так это делалось в свое время, теперь facebook изменил свои API: ы. Для получения более актуального решения посмотрите другие ответы на этот вопрос.

Комментарии:

1. это сработало с req_perms ?? или нам нужно использовать scope