Можете ли вы дать рекомендации относительно расширенных разрешений токенов API графа Facebook в режиме разработки? - PullRequest
0 голосов
/ 21 мая 2019

У меня есть приложение, которое находится в режиме разработки. Моя личная учетная запись Facebook является администратором для приложения. Насколько я понимаю, если эта учетная запись авторизует приложение через OAuth, оно должно иметь все разрешения. Однако, когда я получаю токен, используя эту учетную запись, он имеет только разрешение на общедоступный профиль. Я также заметил, что после извлечения токена, преобразования его в долгосрочный токен и добавления дополнительных разрешений через проводник API новые разрешения применяются к долгосрочному токену (даже если в проводник API загружен новый токен). консоль).

Правильно ли я понимаю, что роли администратора, разработчика и тестера должны иметь все разрешения? Что-то еще, что я должен сделать, чтобы токен имел все разрешения? Является ли добавление разрешений через API Explorer единственным способом сделать это?

Вот шаги, которые я выполняю, и то, что происходит на каждом этапе:

1) Я использую Facebook Login через Javascript SDK (с оберткой ngx-facebook), инициализированный идентификатором приложения моего приложения, находящегося в режиме разработки. 2) Я вхожу с учетной записью Facebook, которая является администратором приложения. 3) Создается краткосрочный токен, который я конвертирую в долгосрочный токен с помощью конечной точки / oauth / access_token. 4) Я храню долгосрочный токен для будущего использования. 5) Я пытаюсь использовать долгосрочный токен, чтобы получить сообщения для страницы, принадлежащей учетной записи администратора, и получить следующий ответ:

"error":{"error":{"message":"(#10) To use \'Page Public Content Access\', your use of this endpoint must be reviewed and approved by Facebook. To submit this \'Page Public Content Access\' feature for review please read our documentation on reviewable features: https://developers.facebook.com/docs/apps/review."

6) Я проверяю разрешения для пользователя, используя долгосрочный токен и идентификатор пользователя, и получаю следующий ответ. Это объясняет ответ выше, но я думал, что роли администратора, разработчика и тестера должны были иметь доступ ко всем разрешениям.

{
  "data": [
    {
      "permission": "public_profile",
      "status": "granted"
    }
  ]
}

7) Я захожу в консоль обозревателя API, вошедшую в систему как администратор учетной записи разработчика, в которой находится мое приложение, выбираю разрешение manage_pages и нажимаю «Получить токен доступа». Я получаю новый токен обратно. 8) Я игнорирую этот токен и использую оригинальный токен. Теперь он может успешно получать сообщения для страницы. 9) Я проверяю исходные разрешения токена и узнаю, что процесс в проводнике API добавил разрешения к исходному долгосрочному токену:

{
    "data": [
        {
            "permission": "manage_pages",
            "status": "granted"
        },
        {
            "permission": "pages_show_list",
            "status": "granted"
        },
        {
            "permission": "public_profile",
            "status": "granted"
        }
    ]
}

1 Ответ

0 голосов
/ 22 мая 2019

Я провел еще несколько исследований и нашел ответ. Я отвечу здесь на случай, если другие будут бороться с этим.

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

Например, используя Javscript SDK для входа в Facebook, вы отправляете список в свойстве «scope» параметра options. Вот как это выглядит:

FB.login(function(response) {
  // handle the response
}, {scope: 'manage_pages,instagram_basic,instagram_manage_insights,read_insights'});

И вот как это выглядело бы, если бы вы использовали оболочку ngx-facebook для Angular:

this.facebook.login({scope: 'manage_pages,instagram_basic,instagram_manage_insights,read_insights' }).then

Фундаментальная вещь, которую я пропустил, заключается в том, что для входа в Facebook требуется опция масштаба. В противном случае по умолчанию запрашивается только опция public_profile.

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