FB.login всегда запрашивает мой пароль (даже если я уже вошел в систему)

Я играю с Facebook Javascript SDK, чтобы реализовать действие Facebook Connect. Это уже работает, но проблема в том, что каждый раз, когда я пытаюсь снова войти в свое приложение, пользователь должен повторно вводить свой пароль facebook.

Я уверен, что есть возможность сделать этот шаг без ввода пароля, если вы уже вошли в систему на Facebook (я видел это на многих веб-страницах). Но как? Документация http://developers.facebook.com/docs/reference/javascript/FB.login/ и даже в исходном коде не объясняется, как это сделать:

"@param выбирает {Object} (необязательно) параметры для изменения поведения при входе в систему."

Моя реализация сейчас такова:

function login(){
  FB.login(function(response) {
   if (response.authResponse) {

     $(".fb_login").hide();
     $(".fb_logout").show();

     FB.api('/me', function(response) {
       register_user(response.id, response.name);
     });

   } else {
     alert('User cancelled login or did not fully authorize.');
   }
 });
 }

И я вызываю FB.init так:

FB.init({
  appId      : 'xxxxxxxxx', // App ID
  status     : true, // check login status
  cookie     : true, // enable cookies to allow the server to access the session
  xfbml      : true  // parse XFBML
});

Возможно, это должно быть изменение в FB.init или какая-то опция при вызове FB.login. Любые идеи?

Заранее спасибо, Раймон Бош.


person raimonbosch    schedule 12.06.2012    source источник
comment
Кажется, что основная проблема заключается в моем выходе из системы. Когда пользователь выходит из моего приложения, он также выходит из Facebook. Вот почему им нужно постоянно вводить пароль заново. Таким образом, решение должно заключаться в том, чтобы сделать действие выхода из системы немного более чистым.   -  person raimonbosch    schedule 12.06.2012
comment
Итак, вы уже знаете ответ на вопрос (а именно, не выходить из Facebook при выходе из вашего приложения)? Тогда, пожалуйста, добавьте это как ответ и примите его. :-)   -  person Gijs    schedule 12.06.2012
comment
Что очень удивительно, так это то, какого черта ваше приложение должно закрывать сеанс пользователя facebook? Мое приложение - это мое приложение, оно не имеет ничего общего с facebook, кроме входа в систему. developers.facebook.com/docs/reference/javascript/FB.logout FB.logout отключит пользователя как от вашего сайта, так и от Facebook.   -  person raimonbosch    schedule 12.06.2012
comment
Кажется, правильное решение здесь: stackoverflow.com/questions/2941334/   -  person raimonbosch    schedule 12.06.2012


Ответы (2)


Существует метод FB.getLoginStatus, который можно использовать для проверки пользователь уже вошел в систему:

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var accessToken = response.authResponse.accessToken;
    //you are loggedin 
  } else if (response.status === 'not_authorized') {
    //loggedin but not authorized your app
  } else {
    // the user isn't logged in to Facebook.
  }
});

Вы имели в виду что-то вроде этого

person Sudhir Bastakoti    schedule 12.06.2012
comment
Нет, это нормально. Когда я вхожу в систему, я использую этот метод, чтобы определить, зарегистрирован ли пользователь или нет, и он работает. Проблема в том, что всплывающее окно подключения к facebook всегда запрашивает пароль, даже если я уже вошел в систему в facebook. - person raimonbosch; 12.06.2012

Установите флажок Принудительная повторная аутентификация OAuth в Интернете в настройках PP для разработчиков на странице Facebbok>Ваше приложение. > вход в facebook > настройка > установить для параметра Force Web OAuth Reauthentication значение NO

person Uncoke    schedule 02.01.2019