Как получить (и использование) расширенные полномочия в Facebook с Python/Django

Я пытаюсь записать простое приложение, которое позволяет пользователю дать мое разрешение кода писать в поток Facebook ее страницы. Насколько я понимаю это должно быть столь же легко как:

  1. Сделайте, чтобы пользователь нажал на кнопку, которая запускает всплывающее окно, содержащее страница в моем приложении Facebook.
  2. На той странице они нажимают на что-то, что предоставляет stream_publish моему приложению и присваивает то разрешение их странице.
  3. Завершения окна, у меня теперь есть вся информация, я должен запустить скрипт в кроне для продвижения материала к потоку той страницы.

Я читал Wiki в течение многих дней. Примечания по pyfacebook составляют, по крайней мере, год, который устарел, и люди указали на меня на socialauth приложение для Django, который, кажется, одинаково устарел и сфокусированным на предназначении для пользователей в противоположность их страницам. Я не могу даже привести в порядок № 1 там, позволить вдоль № 2 и 3.

Если кто-то мог бы показать мне, как использовать Django/Python для запрошенного/получения разрешения записать в поток Facebook, который будет большим запуском.

Любая справка значительно ценилась бы.

11
задан 2 revs, 2 users 97% 9 August 2011 в 21:35
поделиться

2 ответа

После долгих подтасовок, я, кажется, решил все свои проблемы в Facebookland:

  1. Оказывается, иметь пользователя нажать на кнопку для предоставления разрешений так же легко, как Кайо Ромао сказал, что это было так просто. Со своей стороны, я обнаружил, что направить их на ссылку приложения Facebook Desktop App гораздо проще и надежнее.
  2. Используя этот метод ссылок, Facebook позволяет указать enable_profile_selector=1, из которого пользователь может выбрать, какие страницы (если таковые имеются) будут давать такие разрешения.
  3. Для этого, однако, Facebook полностью сломан. В то время как в #2 они позволяют пользователю выбрать страницу для предоставления разрешений, они не передают эту информацию приложению ни в виде POST, ни в заголовках. Ее просто нет. Вместо этого нужно сделать уродливый трюк с FQL и некоторые дополнительные вопросы к пользователю, чтобы заставить его работать.

В любом случае, я подробно описал все это в своем блоге, если кому-то интересно. Спасибо за помощь!

1
ответ дан 3 December 2019 в 11:52
поделиться

Посмотрели ли Вы minifb? Их -страница примеров показывает в основном всё, что нужно знать для запроса авторизации и получения ключа сеанса. (Также, страница github для pyfacebook показывает, что библиотека всё ещё жива)

Итак, для вашего сценария вам нужно:

  1. Запросить разрешение "stream_publish". Есть некоторые способы сделать это, но на самом деле я бы выбрал самый простой: отправка формы (обратите внимание, что я никогда не делал приложение для facebook, я, вероятно, ошибаюсь, полагая, что этот подход самый простой :-)
  2. Используйте ваше приложение нормально: вызывайте методы API, используя user_id пользователя, который авторизовал ваше приложение (вам придется его хранить) и, поскольку вы авторизовали, оно не должно давать сбоев.

Для этого, по сути, добавьте эту форму в ваш шаблон:

<form promptpermission="publish_stream">
<input type="submit" value="Allow Publish Stream">
</form>

Кстати, добавляйте эту форму разработчикам Facebook. Очень хорошая официальная документация.

EDIT: Мне пока не разрешено комментировать: Если у вас возникнут проблемы с получением uid, проверьте этот вопрос и ссылки.

.
3
ответ дан 3 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: