Facebook API fb:registration возвращает неверный '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>

person Romain    schedule 30.01.2011    source источник


Ответы (6)


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

person Lovelive    schedule 16.02.2011
comment
Спасибо большое, так и было! Это имеет смысл, но неоднозначное сообщение об ошибке на самом деле не помогает... - person Romain; 18.02.2011
comment
В своем приложении на странице разработчика перейдите в раздел «О программе» -> «Дополнительно» -> «Аутентификация» -> «Режим песочницы» и нажмите «Отключено». Я включил это, думая, что все будет хорошо, поскольку мне нужен только доступ разработчика, но я думаю, что это несовместимо с регистрацией! Я такой глупый. - person James Alday; 01.08.2011
comment
OMG, это убивало нас - большое спасибо! Это был настоящий дох! момент. - person Dom; 24.08.2012
comment
и песочница была решением. - person themhz; 03.04.2013
comment
Фу, спасибо за это. Facebook и их отсутствие документации! - person karmafunk; 09.04.2013

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

<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>

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

<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 из тега внешнего скрипта помогло.

person Vestride    schedule 12.05.2011

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

person Ghaith    schedule 01.02.2011
comment
Спасибо за ваш ответ, но у меня уже есть идентификатор приложения Facebook, который я использую вместо 123456789 выше. Я использовал этот поддельный номер только для того, чтобы не выдавать свой идентификатор приложения. Кроме этого, вы видите что-то неправильное в приведенном выше коде? Если у вас есть идентификатор приложения, не могли бы вы скопировать/вставить этот код и попробовать его с идентификатором вашего приложения? - person Romain; 02.02.2011

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

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

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

person xgretsch    schedule 24.02.2012

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

person Ayush Pant    schedule 16.05.2012

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

person steady_daddy    schedule 16.03.2014