【问题标题】:Integrating facebook connect in my site在我的网站中集成 facebook connect
【发布时间】:2012-03-07 11:10:24
【问题描述】:

好的,我已经有一个现有的网络应用程序。后端是一个休息接口。最初,要登录,用户必须注册,然后使用他的凭据登录。但我想集成facebook登录;

所以在我的休息界面中,我添加了另外两个方法

  1. registerfbUser:注册用户帐号

  2. loginfbUser:允许用户使用自己的facebook账号登录系统后
    注册

我已经能够使用 facebook connect 和 graph api 连接到 facebook。现在,将使用 ajax 调用 loginfbUser,并以 JSON 格式提供详细信息。

我的问题是我应该将哪些信息传递给方法loginfbUser 来验证facebook 用户。我不能只传递 facebook id,因为 api 将打开,因此任何人都可以使用 json 格式的 facebook id 发出 POST 请求

【问题讨论】:

  • 是否也允许用户以旧方式登录?新用户可以选择新方式还是旧方式登录?
  • 当然,双向

标签: facebook facebook-login


【解决方案1】:

在我们公司,我们广泛使用 FB 通过 AJAX 的身份验证来“登录”用户。我们这样做的方式很简单。在用户“登录”或通过页面上的 FB 的 JS SDK 进行身份验证后,我们通过 AJAX 调用将访问令牌发送到我们的服务器。然后,我们的服务器通过向 graph.facebook.com 发送 /me api 调用并从那里获取 FB id 来交叉验证此访问令牌。通过这样做,我们确信它是这个人和只有这个人。

完成此操作后,我们会将这些信息(访问令牌和用户的 facebook id)存储为服务器端会话,因此同一会话中的所有未来调用都将正确识别用户。

如果您的起点是 FB 应用程序选项卡或画布应用程序,则访问令牌和 fbId 由 facebook 在签名请求中发送,您可以“取消签名”并用于存储在会话中并避免对 graph.facebook.com 的调用(可能会有点慢并形成性能/UX 瓶颈)

【讨论】:

    【解决方案2】:

    AFAIK,Facebook Connect 的全部意义在于让 Web 开发人员不再担心用户名/密码。我相信这个想法是将 Facebook ID 存储在用户数据库中,并使用 Graph API 来查看该用户当前是否登录 Facebook。这样,您的网站就会通过其在 Facebook 上的存在对用户进行身份验证。

    【讨论】:

      【解决方案3】:

      假设您使用的是 JS SDK 和 PHP SDK,任何执行需要 FB 身份验证的操作的函数都应该像这样开始:

      $this->_facebook = new Facebook(array(
        'appId'  => $this->app_id,
        'secret' => $this->app_secret,
        'fileUpload' => true, 
        'cookie' => true
      ));
      
      try {
        $this->_fb_userid = $this->_facebook->getUser();
      } catch (FacebookApiException $e) {
        // the user is not authenticated!
        return;
      }
      
      try {
        $this->_fb_me = $this->_facebook->api('/me');
      } catch (FacebookApiException $e) {
        // API call didn't work, show error...
        return;
      }
      

      如果您的用户通过 javascript 进行身份验证,PHP SDK 将自动了解登录用户。 JS SDK 通过 cookie 将此信息发送到您的服务器,PHP SDK 会自动读取它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 2011-03-20
        相关资源
        最近更新 更多