使用facebook连接问题登录

时间:2011-02-13 02:32:00

标签: facebook facebook-graph-api

我想在我的网站上实现facebook connect。我使用了oauth api来获取应用程序的权限请求。

但是,我遇到了以下问题。

如果用户第一次使用facebook connect登录我的网站,我需要为他(在我的网站上)创建一个新的用户名/密码,以便能够浏览我的网站并设置所有会话变量。但是,我应该使用什么作为用户名/密码? 我知道Facebook用户可以更改他的电子邮件地址。

我如何处理第二次或第三次使用facebook连接登录的用户(谁已经是我网站的成员)?我不需要在我的网站上为他们创建用户,因为他在第一次登录时已经创建了用户。我是否检查电子邮件地址以查看Facebook用户的电子邮件地址是否存在于数据库中?此外,Facebook用户可以更改其电子邮件地址的问题也一样。

对于我可以用作用户名的facebook用户,有什么不改变的东西?另外,我用什么密码?另外,据我所知,如果我使用来自可用应用数据的用户名/密码,那么使用普通机制,用户也可以登录我的网站。我如何防止这个安全漏洞?

请帮忙。

2 个答案:

答案 0 :(得分:3)

我使用facebook在回调中发送的信息(Facebook唯一用户ID或普通ID),然后检查用户是否在我的数据库中,如果不是我插入他但我留空了otherstrstlike密码或用户电子邮件(你也可以请求信息也检查php api中的第418行并添加“'req_perms'=>'email',”)因为我可以在再次连接时再检索那些数据,然后像所有方式设置会话。 如果用户更改电子邮件,只需在每次登录时检查并更新数据。 例如:

 $facebook = new Facebook(array(
      'appId'  => 'xxxxxxxxx',
      'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
      'cookie' => true,
    ));
    $session = $facebook->getSession();

    $me = null;
    // Session based API call.
    if ($session) {
      try {
        $uid = $facebook->getUser();
        $me = $facebook->api('/me');

      } catch (FacebookApiException $e) {
        error_log($e);
      }
    }


    // login or logout url will be needed depending on current user state.
    if ($me) {
      $logoutUrl = $facebook->getLogoutUrl();

    } else {
      $loginUrl = $facebook->getLoginUrl();
    }
    if ($me) {

    if (!isset($_SESSION["usr_id"])){
     $_SESSION["usr_id"] =$me['id'];
      $_SESSION["usr_name"]=$me['name'];

// or do your sql verification and then set the sessions 

        }
    }
    /////////////////////////////////////////////

答案 1 :(得分:0)

Facebook提供用户的唯一ID。您可以使用此信息识别用户。