如何使用Facebook的api登录我的应用程序(网站),但让我登录facebook.com?
这让我很好:
window.fbAsyncInit = function()
{
FB.init({
appId : '<?= APP_ID ?>',
status : true,
cookie : true,
xfbml : true,
oauth : true,
});
FB.Event.subscribe('auth.login', function(response)
{alert(response);
window.location = 'http://reviewsie.com/accounts/facebook';
});
};
(function(d)
{
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
然后我点击我的网站上的注销,我将会话杀死到我的应用程序。然后,当你再次点击fb:login-button时,它只是打开和关闭,并没有做任何事情,因为我仍然连接到Facebook。我想让它重定向。
但是,如果我退出时我也使用Facebook :: logoutUrl它会将我从我的应用程序和Facebook中导出,这不是我想要的。
答案 0 :(得分:6)
这对我有用:
window.fbAsyncInit = function() {
FB.getLoginStatus(function(response) {
FB.api("/me/permissions", "delete", function(response){
});
});
}
答案 1 :(得分:6)
有点晚但可能会帮助别人。您可以撤消应用程序权限,从而有效地将其从应用程序中注销。这是代码:
UIViewController
答案 2 :(得分:3)
如果您使用fb登录,是否确定只想注销您的应用,而不是fb?什么样的应用程序可能想要做这样的事情?为什么?这样做有什么好处?
但如果你真的想(黑客),请在index.php:
<?php
require 'init.php'; // general init
require 'init_fb.php'; // sets $fb_id if logged in to fb
if (isset($fb_id) and !isset($_SESSION['do_not_auto_login'])) {
echo "<a href='/logout'>Logout</button>";
include 'app.php';
return;
}
if (isset($_SESSION['do_not_auto_login'])
echo "<a href='/re_login'>FB Login</button>";
else include 'html_and_js_fb_login_code_and_button.php';
include 'startpage.php';
?>
并在logout.php中:
$_SESSION['do_not_auto_login'] = true;
// destroy-code
并在re_login.php中:
unset($_SESSION['do_not_auto_login']);
header("location: /"); // re-direct back to index.php
不完美,但效果有点好。希望你得到黑客!
但是,为什么呢?如果您认为您的用户不想回来,请询问“如何从用户中删除我的fb-app?”或者别的东西或尝试@DMCS的答案..为什么?
答案 3 :(得分:1)
您需要使用destroySession
进行Facebook
www.example.com?act=logout
<?php
php sdk blah blah
if($_GET['act'] =='logout'){
$facebook->destroySession();
}
$params = array(
'scope' => 'read_stream, friends_likes',
'redirect_uri' => 'https://www.myapp.com/post_login_page'
);
$loginUrl = $facebook->getLoginUrl($params);
?>
也许您需要设置param才能使其重定向。
答案 4 :(得分:0)
当用户登录您的应用时,使用他们当前的访问令牌向/me/permissions
发送HTTP DELETE调用。这会将它们从您的应用中注销,要求他们重新进行身份验证,如果他们想要播放更多内容。还要确保使用正常的php会话清除代码来破坏php会话。