#facebook #facebook-graph-api
#Facebook #facebook-graph-api
Вопрос:
У меня есть стандартная кнопка входа в Facebook на моей домашней странице, и я не хочу, чтобы люди автоматически заходили на мой сайт со своей учетной записью Facebook, только если пользователь нажимает кнопку входа.
Если пользователь не авторизован в Facebook, появится всплывающее окно с запросом его учетных данных, и после этого он будет перенаправлен на loggedin.html
.
<div id="fb-root"></div>
<fb:login-button perms="email"></fb:login-button>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxxxxxxxx',
status : true,
cookie : true,
xfbml : true
});
FB.Event.subscribe('auth.login', function() {
window.location = "loggedin.html";
});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
Если пользователь уже вошел в Facebook, когда он нажимает на кнопку, всплывающее окно появляется и сразу исчезает, я согласен с этим. Но пользователь не перенаправляется на loggedin.html
. Как я могу это сделать?
Ответ №1:
Если вы используете PHP SDK, вы можете использовать следующий код:
require_once 'path/to/facebook.php';
define('A_ID', '*YOUR APP ID*');
define('A_SECRET', 'YOUR APP SECRET');
$facebook = new Facebook(array('appId' => A_ID, 'secret' => A_SECRET, 'cookie' => true));
$userId = $facebook->getUser();
if (!$userId):
?>
<!-- HTML to show if the $userId isn't available (user isn't logged in) -->
<?php
else:
?>
<!-- HTML to show if the $userId is available (user is logged in)-->
<?php
endif;
В идеале вы должны использовать PHP SDK, поскольку это дает вам больше контроля над данными и способом их отображения, чем использование JS SDK для вставки данных.
Facebook имеет ссылку на PHP SDK здесь:developers.facebook.com/docs/reference/php
Ссылка на JavaScript SDK находится здесь:developers.facebook.com/docs/reference/javascript
Ответ №2:
У меня была такая же проблема. Я решил это, используя обычную ссылку вместо thingy и добавив обработчик кликов к этому href с facebook FB.login функция javascript
http://developers.facebook.com/docs/reference/javascript/FB.login/
В рамках различных ответов я мог бы обрабатывать соответствующие Ajax-функции.