Fb API Facebook: регистрация возвращает "неверный 'client_id'", когда не подключен к Facebook

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

Я использую <fb:registration> тег для этой цели. Если я уже подключился к Facebook, когда захожу на страницу, все работает как положено (форма заполнена информацией из моей учетной записи Facebook). Но если я не подключен к Facebook, отображается следующая ошибка: Invalid 'client_id'.,

Что я делаю неправильно?

Большое спасибо за вашу помощь.

Ниже вы найдете HTML-код, отображаемый с сервера:

<!doctype html>
<html xmlns:fb='http://www.facebook.com/2008/fbml'>
<head id='head'>
<title>MyWebSite - Signup</title>
<link rel='stylesheet' type='text/css' href='/client/Core.css'/>
<script language='JavaScript' type='text/javascript' src='/client/jQuery.js'></script>
<script type='text/javascript'>
function initialize() {
 $.getScript('client/Core.js');
 $.getScript(document.location.protocol + '//connect.facebook.net/en_US/all.js');
}

window.fbAsyncInit = function() {
 FB.init({
  appId   : 123456789, // replaced here by my App ID
  session : {},
  status  : true,
  cookie  : true,
  xfbml   : true
 });
 FB.Event.subscribe('auth.login', function() {
  window.location.href = 'DoLogin';
 });
};
</script>
</head>
<body onload='initialize();'>
<span id='fb-root'></span>
<fb:registration 
    fields='[{"name":"name"},{"name":"first_name"},{"name":"last_name"},{"name":"email"},{"name":"location"},{"name":"gender"},{"name":"password","view":"not_prefilled"},{"name":"captcha"}]' 
    redirect-uri='http://172.16.100.31/DoSignup'
    width='600'
    fb_only='false'
    allowTransparency='true'>
</fb:registration>
</body>
</html>

6 ответов

Решение

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

Я столкнулся с той же проблемой, за исключением того, что у меня уже была отключена песочница. Я включил тег сценария как

<script src="http://connect.facebook.net/en_US/all.js#appId={YOUR_APP_ID}&xfbml=1"></script>

<fb:registration 
  fields="name,birthday,gender,location,email" 
  redirect-uri="https://developers.facebook.com/tools/echo/"
  width="530">
</fb:registration>

однако, как это было на странице примера регистрации, на странице JavaScript SDK

<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({
    appId  : 'YOUR APP ID',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true  // parse XFBML
  });
</script>

Удаление #appId={YOUR_APP_ID}&xfbml=1 из внешнего тега скрипт сделал свое дело.

В моем случае я отображал ссылку регистрации fb без входа в систему пользователя. Долго почесывая голову, я попросил пользователя войти в систему через Facebook, прежде чем представить регистрационную форму. Ошибка ушла на мою радость.

Для тестирования установите свой YOUR_APP_ID в 113869198637480

Просто угадаю здесь - потому что у меня была похожая, но не идентичная проблема:

Если вы используете код XFBML Facebook на http://developers.facebook.com/docs/plugins/registration/ и замените слово {YOUR_APP_ID} на {1234123434534} (или что-то еще), произойдет сбой, потому что он не ожидает вьющиеся скобки. (Отличается от других областей, которые используют JSON и ожидают их).

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

Если вы зарегистрировали свое приложение в Facebook, они предоставят вам appID, который вам нужно будет использовать вместо "123456789" AppID в приведенном выше коде.

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