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 в приведенном выше коде.