Я хотел бы ввести логин на моем сайте в Facebook.Этот сайт предназначен для самостоятельного изучения, поэтому я не использую php-зависимости на Facebook.Я уже сделал это, но с версией 2.3 я выбрал самую последнюю: версию 3.3, и мое приложение работает (не в тестовом режиме)
Я начал просто получать свой базовый профиль (простофамилия, имя и идентификатор Facebook).Все работает как положено.Когда я закончил, я подумал, что мое приложение было отлично настроено, затем я поиграл с Facebook Playground , чтобы обнаружить разрешения и графические поля.
Первая проблема: я не смог получить свои списки друзей(с детской площадкой).У меня было разрешение «друзья» в моем токене, затем я спрашиваю списки друзей id, я всегда получаю следующую ошибку:
{
"error": {
"message": "(#33) This object does not exist or does not support this action",
"type": "OAuthException",
"code": 33,
"fbtrace_id": "DLbDoKNTwEh"
}
}
Это не очень важно, я решил отложить это в сторону: я отключил его,Затем, без области списка друзей, все на моем локальном сервере работает нормально: я решил перенести его на свой промежуточный сервер (приложение heroku).Тогда у меня был URL обратного вызова в моей конфигурации Facebook.И мне никогда не удается войти в мою учетную запись Facebook на сервере heroku.Следующий метод класса позволяет мне управлять моим социальным API.Таким образом, метод перенаправляет пользователя на URL, чтобы получить социальный токен из возвращенного кода:
private function getRedirectURL(Social $social){
return File::fromRoot(Folder::getVersionFolder().'redirections/'.$social->getType().'.php')->getUrl(['protocol' => 'https']);
}
public function attemptLogin($social = null){
$social = Social::get($social);
switch(Social::TYPES[$social->getType()]){
case Social::TYPES['facebook']:
return 'https://www.facebook.com/v3.3/dialog/oauth?client_id=' . CONFIG::SOCIAL['facebook']['id'] . '&redirect_uri='.$this->getRedirectURL($social).'&scope=user_birthday,user_hometown,user_location,user_photos,user_friends,user_gender,user_link,user_age_range,email,public_profile';
break;
case Social::TYPES['instagram']:
return 'https://api.instagram.com/oauth/authorize/?client_id='.CONFIG::SOCIAL['instagram']['id'].'&redirect_uri='.$this->getRedirectURL($social).'&response_type=code';
break;
case 'google':
return 'https://accounts.google.com/o/oauth2/v2/auth?redirect_uri='.$this->getRedirectURL($social).'&prompt=consent&response_type=code&client_id='.CONFIG::SOCIAL['google']['id'].'&scope=https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile&access_type=offline';
break;
}
return Folder::fromRoot(Folder::getVersionFolder())->getUrl();
}
Эта ссылка возвращает мне эту ошибку, когда я пытаюсь войти в систему:
Неверные области: user_birthday, user_hometown, user_location, user_photos, user_friends, user_gender, user_link, user_age_range.Это сообщение показывается только разработчикам.Пользователи вашего приложения будут игнорировать эти разрешения, если они есть.Пожалуйста, прочитайте документацию для действительных разрешений: https://developers.facebook.com/docs/facebook-login/permissions