代码之家  ›  专栏  ›  技术社区  ›  caw

Facebook连接-认证和安全

  •  2
  • caw  · 技术社区  · 16 年前

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

    第一:请不要回答“在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上的用户名。

    感谢您的帮助!

    3 回复  |  直到 14 年前
        1
  •  4
  •   ZZ Coder    16 年前

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

    如果使用正式的php库,只需在members.php的开头添加以下代码行,

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

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

        2
  •  0
  •   Imran    16 年前

    如果您想真正安全,您应该检查他在尝试获取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;
       }
     });
    });
    
        3
  •  -1
  •   Scott Evernden    16 年前

    不会 FB.Connect.get_status() 你需要什么?