Инициировать вход для пользовательских историй

Я создал собственную историю, которая будет публиковаться на временной шкале Facebook, когда пользователь нажимает кнопку "Поделиться".

Хотя я вошел в Facebook, я мог успешно разместить на временной шкале, используя следующий код

function postLike() {
    FB.api(
   'https://graph.facebook.com/me/og_pricepan:compared',
   'post',
   { product: objectToLike,
       privacy: { 'value': 'SELF'}
   },
   function (response) {
       if (!response) {
           alert('Error occurred.');
       } else if (response.error) {
           document.getElementById('result').innerHTML =
         'Error: ' + response.error.message;
       } else {
           document.getElementById('result').innerHTML =
         '<a href=\"https://www.facebook.com/me/activity/' +
         response.id + '\">' +
         'Story created.  ID is ' +
         response.id + '</a>';
       }
   }
);

Теперь, когда пользователь не вошел в Facebook, я получаю следующую ошибку:

Ошибка: активный токен доступа должен использоваться для запроса информации о текущем пользователе.

  1. Разве окно входа в систему не должно открываться само по себе, запрашивая у пользователя вход в Facebook, или мне нужно что-то предпринять для решения этой ситуации?

  2. Кроме того, нужно ли мне отправлять заявку на рассмотрение, прежде чем пользователи смогут создавать собственные истории со своего веб-сайта на своей временной шкале?

1 ответ

Решение

Разве окно входа в систему не должно открываться само по себе, запрашивая у пользователя вход в Facebook, или мне нужно что-то предпринять для решения этой ситуации?

Нет. Вы должны явно войти в систему пользователя, следуя потоку входа в Facebook, чтобы запросить токен доступа

Кроме того, нужно ли мне отправлять заявку на рассмотрение, прежде чем пользователи смогут создавать собственные истории со своего веб-сайта на своей временной шкале?

Да и нет. Нет, потому что вам не нужно, чтобы кто-то из группы поддержки Facebook просматривал ваше приложение, чтобы убедиться, что оно помечено всеми флажками. Да, потому что вам нужно зарегистрировать свое приложение на Facebook. Таким образом, технически все, что вам нужно сделать, это зарегистрироваться на Facebook как разработчик и зарегистрировать свое приложение, чтобы получить секрет приложения и ключ API. Вы можете использовать свое приложение в "режиме песочницы", создавать тестовых пользователей и тестировать свою интеграцию с Facebook, прежде чем публиковать его вживую. Есть несколько требований, которые необходимо выполнить перед публикацией, таких как предоставление набора логотипов определенного размера и т. Д. Вот блог, объясняющий часть процесса, но на самом деле, процесс очень прост, и вы должны быть в состоянии получить легко через себя.

Теперь ошибка, которую вы получаете, говорит обо всем. Там нет пользователя, вошедшего в Facebook. Конечная точка, на которую вы пытаетесь отправить сообщение, требует активного действующего токена доступа, если он не существует, тогда нет контекста, нет аутентифицированного пользователя, и вам нужно явно аутентифицировать пользователя, вызывая диалог входа в систему...

FB.login(function(response) {
    if (response.authResponse) {
        // The person logged into your app
    } else {
        // The person cancelled the login dialog
    }
});

Если вам нужно знать, вошел ли пользователь в систему или нет, вы можете придерживаться простых подходов:

1.Призывая FB.getLoginStatus функция

FB.getLoginStatus(function(response) {
   if (response.status === 'connected') {
     var uid = response.authResponse.userID;
     var accessToken = response.authResponse.accessToken;
   } 
   else if (response.status === 'not_authorized') {
       // the user is logged in to Facebook, 
       // but has not authenticated your app
   } 
   else {
       // the user isn't logged in to Facebook.
   }
  });

2. Или, подписавшись на auth.authResponseChange событие при инициализации структуры и установке status возможность true

На сайте разработчиков Facebook для Javascript SDK есть полноценное руководство, объясняющее оба подхода.

Надеюсь, это имеет смысл

Другие вопросы по тегам