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

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

  • Попросите пользователя нажать кнопку, которая запускает всплывающее окно, содержащее страницу в моем приложении для Facebook.
  • На этой странице они нажимают на то, что предоставляет stream_publish в мое приложение и назначает это разрешение на их страницу.
  • Окно закрывается, теперь у меня есть вся информация, которую мне нужно запустить script в cron, чтобы передать материал этому потоку страницы.

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

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

Любая помощь будет принята с благодарностью.

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

Престижность разработчикам Facebook, между прочим. Очень хорошая официальная документация.

РЕДАКТИРОВАТЬ: мне еще не разрешено прокомментировать: если вы сталкиваетесь с проблемами получения uid, проверьте этот вопрос и ссылки.