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

Проблема:

Я не могу полностью подписать свое приложение Facebook + Webhook на страницу Facebook с помощью входа в Facebook. Страница подписывается на приложение, но приложение + Webhook не получает сообщений от страницы.


Шаги, которым я следую:

0. Приложение находится в режиме разработчика со следующими разрешениями:

manage_pages - before review
read_page_mailboxes - before review
pages_messaging - approved review

(В режиме разработки я тестирую как администратор приложения и страницы)

1. Пользователь нажимает кнопку "Войти" и запрашивает следующие разрешения:

email, manage_pages, pages_show_list, pages_messaging, pages_messaging_phone_number, pages_messaging_subscriptions, public_profile

2. Пользователь нажимает "Принять", чтобы предоставить все эти разрешения.

И это возвращается при отправке запроса GET в /me/permissions с использованием user_access_token

0: {permission: "email", status: "granted"}  
1: {permission: "manage_pages", status: "granted"}   
2: {permission: "pages_show_list", status: "granted"}  
3: {permission: "pages_messaging", status: "granted"}  
4: {permission: "pages_messaging_phone_number", status: "granted"}  
5: {permission: "pages_messaging_subscriptions", status: "granted"}  
6: {permission: "public_profile", status: "granted"}

3. Отправьте запрос GET на /me/account, чтобы получить массив данных о страницах пользователя.

Каждая страница пользователя в Facebook возвращается с page_id и page_access_token.

data: {  
    0: {
        access_token: "PAGE_ACCESS_TOKEN"
        category: "Business Service"
        category_list: {
            0: {id: "xxxxxx", name: "Business Service"}
        }
        id: "PAGE_ID"
        name: "PAGE_NAME"
        tasks: ["ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE"]
    }
}

4. Отображение PAGE_NAME, чтобы пользователь мог выбрать, на какую из них подписаться на мое приложение Facebook.

Пользователь нажимает на соответствующую страницу, чтобы запустить шаг 5.

5. Отправить запрос POST на /PAGE_ID/subscribed_apps

Я использую правильный PAGE_ACCESS_TOKEN для страницы, которую нажимает пользователь. И я включаю эти subscribed_fields

var subscribeAppFields = [
    "messages",
    "messaging_optins",
    "messaging_postbacks",
    "messaging_handovers",
    "standby"
]; 

...

FB.api( "/"+pageID+"/subscribed_apps",
   "POST",
    {
        subscribed_fields : subscribeAppFields,
        access_token : pageAccessToken
    },
    function (response) { ... } 
);

Отправка запроса GET на /PAGE_ID/subscribed_apps возвращает:

{success: true}

Результат

Если я проверю настройки этой страницы Facebook, мое приложение отображается в разделе «Подключенные приложения»:

введите здесь описание изображения

И я даже установил страницу «Первичный получатель протокола передачи обслуживания» в качестве приложения.

введите здесь описание изображения

Но сообщения, отправленные на страницу Facebook, не принимаются Webhook приложения. И когда я проверяю настройки своего приложения, моя страница не отображается в разделе «Страницы с подпиской».

введите здесь описание изображения

Я ожидаю, что сообщения страницы будут поступать в мое приложение и веб-перехватчик, и я ожидаю, что имя страницы появится на изображении выше в разделе «Страницы с подпиской».

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

Цель состоит в том, чтобы другие владельцы страницы предоставили разрешение и автоматически подключили свою страницу к моему приложению / веб-перехватчику / чат-боту.


Вопрос

Как мне заполнить подписку Page - App, чтобы сообщения страницы передавались на веб-перехватчик приложения?


Я читал и следил за ними или пробовал это:

Связанные вопросы

невозможно-подписаться на-страницу-на-facebook-приложение
subscribe-facebook-page-to-external-app
подписанные приложения-страница-и-приложение-генерация-токена-доступа
cant-connect-facebook-app-to-facebook- страница
subscribe-facebook- test-pages-to-facebook-apps-webhook
chatbot-generate-page-tokens-for-the-pages-you-dont-own-usi ng-facebook-login

Документация

Войти в Facebook
Разрешения на вход
Токены доступа
Приложения с подпиской


person Jay A. Little    schedule 01.02.2019    source источник
comment
Предполагая, что вы еще не получили это рассмотрение в Facebook, вам нужно протестировать это с учетными записями пользователей, которые играют роль в вашем приложении - так ли? (Должен быть, это должно быть как для администратора страницы, так и для пользователя, отправляющего сообщение на страницу.) Выполнили ли вы все остальные шаги до успешного завершения, включая отправку тестового запроса веб-перехватчика в ваше приложение?   -  person 04FS    schedule 01.02.2019
comment
Да, я являюсь администратором как приложения, так и страницы, и я являюсь пользователем, отправляющим сообщение только для тестирования перед обзором. Приложение действительно подключено и работает с другой страницей, на которую я подписался вручную (удалено с рис.). Итак, я могу подтвердить, что веб-перехватчик и чат-бот успешно работают после полной подписки на веб-перехватчик приложения.   -  person Jay A. Little    schedule 01.02.2019


Ответы (1)


Решение, часть 1: если на вашей странице отображается подписка, а в приложении нет, это означает, что у вас есть разрешение USER manage_pages, но не включено разрешение APP manage_pages.

Все шаги из вопроса верны. Но для меня это продолжало терпеть неудачу.

Решение, часть 2: у меня продолжалась неудача, потому что учетные записи, которые я использовал для тестирования, имели устаревшие разрешения, уже установленные с предыдущих попыток, и даже несмотря на то, что я обновил приложение и / или вход с новым пользователем / app permissions старые разрешения должны остаться при новых попытках.

Поэтому мне пришлось создать совершенно нового пользователя и тестовую страницу, чтобы правильно протестировать обновленное приложение и процесс входа в систему. Но это было только для того, чтобы выявить настоящую проблему. Более простое решение для тестирования входа в систему:

Вам необходимо полностью удалить пользовательские разрешения, которые вы предоставили своему Приложению после каждой попытки входа в систему (предоставления разрешений).
Чтобы сбросить свои разрешения ПОЛЬЗОВАТЕЛЯ для Приложения, перейдите по адресу: facebook.com/settings?tab=business_tools

person Jay A. Little    schedule 18.02.2019