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登录,如果没有登录。

不会FB.Connect.get_status()做你所需要的?

+0

不,这是JavaScript,所以它是不安全的。 – caw 2009-12-07 12:22:31

如果你想要非常安全,你应该检查他是否登录,当他试图让你的服务器端的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; 
    } 
}); 
}); 
+0

感谢您的链接,我会使用这个库。 – caw 2009-12-07 12:23:03