Как получить (и использовать) расширенные разрешения в 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, проверьте этот вопрос и ссылки.