Facebook连接 - 身份验证和安全
我想开发一个使用Facebook连接的外部网站,而不是自己的登录和注册过程。Facebook连接 - 身份验证和安全
第一:请不要回答“请参阅facebook.com上的文档”左右。我在那里几次阅读过所有的网页。但我找不到答案。
对于我的登录按钮,我用这个代码:
<fb:login-button v="2" size="large" autologoutlink="false" onlogin="window.location='/index.php'">Connect with Facebook</fb:login-button>
要显示当前用户的名称使用:
<fb:name uid="loggedinuser" linked="true" firstnameonly="false" possessive="false" useyou="false" ifcantsee="Facebook-User"></fb:name>
最后,对于注销,我使用下面的链接:
<a href="#" onclick="javascript:FB.Connect.logoutAndRedirect('/index.php'); return false">Logout</a>
这很容易。它在文档中有很好的解释。
但我的问题开始时,我想检测用户是否登录或不。 Facebook在this page上解释了有关此主题的所有内容。
但我不明白我必须做什么。如果用户请求的页面“members.php”,他没有登录,应该有一个消息,或者他应该被重定向
- :我想向做的就是这个。但Facebook的JavaScript功能并不安全,是吗?通常,我使用服务器端身份验证。
- 我想知道用户是否登录或不显示登录按钮或注销链接。
- 如果用户登录,我想知道他的用户名在Facebook上。
感谢您的帮助提前!
你是正确的,JavaScript是不安全的。您在JavaScript中执行的所有操作都是为了提高用户体验,而不是强化安全性。
如果您使用官方的PHP库,你只需要添加的代码下面几行你members.php之初,
$facebook = new Facebook(API_KEY, API_SECRET);
$fb_user = $facebook->require_login();
这将用户重定向至Facebook登录,如果没有登录。
如果你想要非常安全,你应该检查他是否登录,当他试图让你的服务器端的members.php使用PHP library的FB。
重新按钮,我会做这样的事情:
FB.Connect.init(...);
FB.ensureInit(function() {
FB.Connect.get_status().waitUntilReady(function(status) {
switch (status) {
case FB.ConnectState.connected:
hideLoginButton();
loggedIn = true;
break;
case FB.ConnectState.appNotAuthorized:
case FB.ConnectState.userNotLoggedIn:
showLoginButton();
loggedIn = false;
}
});
});
感谢您的链接,我会使用这个库。 – caw 2009-12-07 12:23:03
不,这是JavaScript,所以它是不安全的。 – caw 2009-12-07 12:22:31