Ошибка токена доступа Facebook при отправке уведомлений в массив идентификаторов с помощью Javascript

У меня есть список идентификаторов Facebook, хранящихся в массиве с именем myArrayЯ пытаюсь написать Javascript, который будет проходить через этот массив и отправлять уведомления каждому идентификатору.

Это моя последняя попытка:

function sendNotifications(){

var myArray = [624523462, 25624523426, 3245451236, 14352654];

for (var q = 0; q < myArray.length; q++) { 

    FB.api( 
   "/"+myArray[q]+"/notifications",
    "POST",
   {
        "template": "This is a test notification!"
    },
    function (response) {
      if (response && !response.error) {
          console.log("notification should be sent.");
      } else {
      console.log(response);
         }
      }
     );             
    }}

Это дает мне сообщение об ошибке:message:"(#15) This method must be called with an app access_token.

Меня это немного смущает, потому что на этом этапе плеер уже вошел в мое приложение. Я уже сделал несколько запросов на информацию о плеере из Graph API, поэтому не уверен, почему он запрашивает у меня токен доступа к приложению. Нужен ли мне новый токен доступа для каждого отправленного уведомления? Или он истекает через определенное время?

Я не знаю, как правильно включить это здесь. Я делаю вызов для токена в начале функции и сохраняю его как переменную, которую затем где-то заполняю? Может ли кто-нибудь показать мне правильный синтаксис, чтобы использовать для достижения этого с моим текущим кодом?

Любая помощь будет очень признательна, спасибо заранее!

1 ответ

Решение

В Facebook API есть n узлов конечной точки. Некоторые требуют токен доступа пользователя, некоторые требуют токен доступа к приложению, некоторые требуют токен доступа к странице в зависимости от природы узла. (Вы можете перейти по этой ссылке, чтобы полностью понять токены доступа)

Большинство конечных точек обслуживаются токеном доступа пользователя, который используется в SDK Facebook (FB.api() в вашем случае) по умолчанию при каждом вызове. Следовательно, вы смогли успешно выполнить эти несколько запросов. Справедливо.

API-интерфейс уведомлений требует токен доступа к приложению вместо токена доступа пользователя. Маркер доступа к приложению никогда не истекает, пока учетные данные приложения не будут изменены.

  1. Получение токена доступа к приложению

    вариант 1- использовать - {app-id}|{app-secret} непосредственно, который является только маркером доступа к приложению.

    вариант 2-

    GET /oauth/access_token?
        client_id={app-id}
        &amp;client_secret={app-secret}
        &amp;grant_type=client_credentials 
    

    Важно! Вы не должны раскрывать секрет приложения на своей стороне клиента. Это как пароль к вашему приложению! Таким образом, вы должны сделать этот вызов только на стороне сервера

  2. Маркер доступа к приложению Usinig

    Очень просто использовать любой токен доступа, просто добавьте параметр access_token и передать ему требуемое значение. например: /.../notifications?access_token={app-access-token} В общем, вы должны сделать этот вызов на вашем сервере, а не на стороне клиента напрямую.

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