Страница регистрации Facebook - неверный 'client_id', когда вы не вошли в Facebook

Я сделал регистрационную форму на Facebook, которая работает с настраиваемыми полями и функциями, как я ожидаю, за исключением случаев, когда пользователь не вошел в Facebook при первом посещении формы.

В этой ситуации форма не отображается на экране и появляется следующая ошибка:

Невозможно загрузить регистрационную форму для этого идентификатора. Возможно, вы ранее заблокировали это приложение на Facebook. Перейдите в настройки конфиденциальности Facebook, чтобы разблокировать это приложение. (Ошибка: неверный 'client_id'.)

Теперь я уже знаю, что это обсуждалось на сайте, но решения, предлагаемые в других местах, не работают для меня, и я действительно хочу, чтобы это работало на основе решения XFBML, которое поддерживает Facebook (демонстрация здесь http://developers.facebook.com/docs/plugins/registration/)

Если вы выходите из Facebook, вы можете посетить тест моего кода, взятый непосредственно из примера facebook и едва ли измененный здесь: https://www.askanutritionist.com/fb.html

Кстати, песочница yes отключена в настройках приложения facebook, так как это обычное исправление, предложенное другими пользователями SO.

Спасибо за ваше время. Заметка; Я бы прокомментировал другие существующие вопросы по этой теме, но stackru не позволит мне (пока).

2 ответа

Решение

Просто чтобы подтвердить; Я никогда не исправлял это должным образом. Вместо этого я обошел вокруг и смог выполнить проверку javascript через Facebook SDK, чтобы увидеть, вошел ли пользователь в систему или нет, когда он впервые зашел на страницу, на которой есть форма регистрации в Facebook.

Я делаю перенаправление http, если они не вошли (или не авторизованы), и если они вошли позже на странице, которую я вызываю, чтобы инициировать форму facebook.

window.fbAsyncInit = function() {
FB.init({
    appId      : xxxx, // App ID
    channelUrl : 'http:///xxxxx/fbchannel.php', 
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
});

// Additional initialization code here
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        // all ok!
        //var uid = response.authResponse.userID;
        //var accessToken = response.authResponse.accessToken;
    } else if (response.status === 'not_authorized') {
        window.location.href="create_account_with_facebook?authorizefirst";
    } else {
        window.location.href="create_account_with_facebook?loginfirst";
    }
});
};
// Load the SDK Asynchronously
(function(d){
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
 }(document));

Убедитесь, что приложение, чей идентификатор вы используете, не ограничено демографически (например, по возрасту или стране) и не находится в режиме "песочницы".

Если он ограничен или находится в режиме "песочницы", пользователи, которые не вошли в систему и которые соответствуют примененным ограничениям (или для режима "песочницы", являются администраторами приложения), не смогут увидеть существование приложения или его подробностей, пока не войдут в систему.,

Другие вопросы по тегам