Авторизуйтесь, используя вопрос подключения на Facebook - PullRequest
2 голосов
/ 13 февраля 2011

Я хочу реализовать Facebook Connect на моем сайте. Я использовал oauth api для получения запроса на разрешение для приложения.

Однако у меня возникла следующая проблема.

Если пользователь впервые заходит на мой сайт с помощью Facebook Connect, мне нужно создать новое имя пользователя / пароль для него (на моем сайте), чтобы иметь возможность просматривать мой сайт и иметь все переменные сеанса. Тем не менее, что я должен использовать в качестве имени пользователя / пароля? Я понимаю, что пользователь Facebook может изменить свой адрес электронной почты.

Как мне обращаться с пользователями, которые вошли в систему через Facebook connect второй или третий раз (которые уже являются членами моего сайта)? Мне не нужно создавать пользователя для них на моем сайте, так как он уже создан при первом входе в систему. Проверять ли адрес электронной почты, чтобы увидеть, существует ли в базе данных адрес электронной почты пользователя facebook? Кроме того, возникает та же проблема, что пользователь Facebook может изменить свой адрес электронной почты.

Что единственного, что не меняется для пользователя Facebook, которое я могу использовать для его имени пользователя? Кроме того, что я использую для его пароля? Кроме того, я понимаю, что если я использую имя пользователя / пароль из доступных данных приложения, то, используя обычный механизм, пользователь также может войти на мой сайт. Как я могу предотвратить эту дыру в безопасности?

Пожалуйста, помогите.

Ответы [ 2 ]

3 голосов
/ 26 февраля 2011

Я использую информацию, которую Facebook отправляет в обратном вызове (уникальный идентификатор пользователя Facebook или обычный идентификатор), а затем проверяю, есть ли пользователь в моей базе данных, если нет, я его вставляю, но оставляю пустым другой пароль, например пароль или электронную почту пользователя. (также вы можете запросить эту информацию, тоже проверьте строку 418 в php api и добавьте "'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 

        }
    }
    /////////////////////////////////////////////
0 голосов
/ 13 февраля 2011

Facebook предлагает уникальный идентификатор пользователя.Вы можете узнать пользователя по этой информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...