2012-02-22 2 views
3

Мне нужно сделать веб-приложение для управления сообщениями, когда создается пост, иногда я должен опубликовать краткое рекламное сообщение с одной из компаний fanpages на facebook (в зависимости от критериев на посту).Опубликовать на странице поклонника без offline_access с помощью Graph API?

Это возможно прямо сейчас, используя разрешение offline_access: создайте приложение A, запросите разрешения manage_pages, offline_access, publish_stream и с помощью этого токена доступа, который вы можете подключить, когда хотите график api и отправить на страницу.

Поскольку offline_access устарел и собирается быть удаленным в мае 2012 года, мне было интересно, как можно отправлять сообщения на разные страницы компании.

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

Обходной путь, который я нашел, - это опубликовать на странице пользовательский поток и пометить страницу (для которой требуется только публикация), но Graph API прослушивается и не позволяет вам помечать сообщения. В коде (Ruby + Koala), было бы что-то вроде этого:

oauth = Koala::Facebook::OAuth.new("app-key", "app-secret", nil) 
api = Koala::Facebook::API.new(oauth.get_app_access_token) 
api.put_wall_post("message @[page-id:1:page-name]", {}, "admin-user") 

Единственная проблема заключается в a bug in the facebook API мешает вам мечение вещи в сообщениях в ваш поток.

Возможно, эта модель не будет поддерживаться? Кто-нибудь знает об обходном пути?

ответ

2

Вы можете увеличить 2 столбца таблицы в своем приложении, а именно short_access_token & long_access_token.

Как только пользователь аутентифицирует ваше приложение, создается токен доступа, сохраняющий его в short_access_token. Затем передайте этот токен доступа:

https://graph.facebook.com/oauth/access_token? client_id = APP_ID & client_secret = APP_SECRET & grant_type = fb_exchange_token & fb_exchange_token = EXISTING_ACCESS_TOKEN

После запуска этого будет создан маркер доступа с 60 дней действия. Сохраните его в long_access_token. Теперь используйте этот long_access_token в течение 60 дней.

Вы можете добавить еще одно условие, в котором если long_access_token был сгенерирован более 30 дней назад, просто запустите short_access_token и создайте новый lon_access_token.

Вы можете генерировать долгоживущий токен доступа только один раз в день, то есть в первый раз. Используйте этот долгоживущий токен доступа для управления paes (если у вас уже есть разрешение).

Ref: https://developers.facebook.com/roadmap/offline-access-removal/

+0

Ссылку вы предоставили содержит решение моей проблемы (Сценарий 5: Страница доступа Идентификаторы), поэтому я принимать вашу страницу answer.That не завершена, когда я первый отвечал на мой вопрос. Хорошая находка. – pigoz

0

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

Если у вас нет требования размещать на странице в качестве страницы, то это довольно просто сделать, не прикрепляя этого пользователя к странице администратора. Просто позвольте им быть обычным пользователем.

Смежные вопросы