У меня есть сайт разработки и производственный сайт, работающий на общем сервере. Я использую fb_loginUrl со следующим кодом, который работает.
Я перемещаю производственный сайт в новый домен, также на общий сервер. Я скопировал весь код, включая PHP SDK. Я использовал appID нового домена и секрет. В новом домене fb_loginUrl показывает диалоговое окно входа в систему, если необходимо, правильно вызывает FB и получает обратный вызов GET. Но пользователь всегда равен 0, даже если на компьютере зарегистрирован пользователь. Ошибка CSRF отсутствует. Если я продолжаю обходить бесконечный цикл, он бросает ошибку CSRF во второй раз и каждый второй раз после этого.
Проблема должна быть где-то в настройках для нового приложения, но они такие же, как старые, с обновленными именами и адресами, и я пробовал изменения, которые, как я могу думать, включал трейлинг-косую черту return url. Я начинаю задаваться вопросом, применяются ли FB некоторые другие невидимые значения по умолчанию для недавно зарегистрированных приложений (не полностью параноидальные - настройки по умолчанию на веб-панели различаются, например значение «deprecate offline_access»), но я привел все в соответствие с моя старая установка).
Почему это может происходить по-разному в разных доменах?
require_once '../facebook/facebook.php';
if(!isset($facebook)) $facebook = new Facebook(array(
'appId' => $facebook_appid,
'secret' => $fb_secret,
'scope' => 'email'
));
$fb_user = $facebook->getUser();
echo ' USER: ' . $fb_user;
if ($fb_user) {
try {
$fb_user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
}
}
после того, как вы переместили сайт и получили доступ к новому сайту с тем же URL-адресом, что и раньше? – alexl
Нет, разные URL-адреса и разные идентификаторы приложения FB. И ты дал мне идею. Я попытался использовать старое приложение FB в новом домене, и он работает! Так что это дает мне обходное решение. Но я до сих пор не знаю, почему это произойдет, потому что старое приложение теперь имеет те же настройки, что и новый. – malcanso
У этой проблемы есть в каждом браузере? – yacon