Facebook Connect-身份验证和安全

Facebook Connect-身份验证和安全,facebook,api,security,Facebook,Api,Security,我想开发一个外部网站使用Facebook连接,而不是自己的登录和注册过程 第一:请不要回答“参见facebook.com上的文档”之类的问题。我想我已经把那里的每一页都读了好几遍了。但我找不到答案 对于我的登录按钮,我使用以下代码: <fb:login-button v="2" size="large" autologoutlink="false" onlogin="window.location='/index.php'">Connect with Facebook</fb:

我想开发一个外部网站使用Facebook连接,而不是自己的登录和注册过程

第一:请不要回答“参见facebook.com上的文档”之类的问题。我想我已经把那里的每一页都读了好几遍了。但我找不到答案

对于我的登录按钮,我使用以下代码:

<fb:login-button v="2" size="large" autologoutlink="false" onlogin="window.location='/index.php'">Connect with Facebook</fb:login-button>
连接Facebook
要显示我使用的当前用户名,请执行以下操作:

<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在网站上解释了关于这个话题的一切

但我不明白我要做什么。我想做的是:

  • 如果一个用户请求页面“members.php”,但他没有登录,应该会有一条消息,或者他应该被重定向。但Facebook的JavaScript功能并不安全,是吗?通常,我使用服务器端身份验证
  • 我想知道用户是否已登录以显示登录按钮或注销链接
  • 如果用户登录,我想知道他在Facebook上的用户id

提前谢谢你的帮助

不会做你需要的事情吗?

如果你想真正安全,你应该在他试图让你服务器端的members.php使用for 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;
   }
 });
});

您认为Javascript不安全是正确的。您在Javascript中所做的一切都是为了改善用户体验,而不是加强安全性

如果使用官方PHP库,只需在members.PHP的开头添加以下代码行

$facebook = new Facebook(API_KEY, API_SECRET);
$fb_user = $facebook->require_login();

这将重定向用户到Facebook登录,如果没有登录

不,那是JavaScript,所以不安全。谢谢你的链接,我将使用这个库。