Как получить (и использовать) расширенные разрешения в Facebook с помощью Python/Django
-
21-09-2019 - |
Вопрос
Я пытаюсь написать простое приложение, которое позволит пользователю предоставить моему коду разрешение на запись в поток Facebook ее страницы.Насколько я понимаю, это должно быть так же просто, как:
- Попросите пользователя нажать кнопку, которая откроет всплывающее окно со страницей в моем приложении Facebook.
- На этой странице они нажимают на что-то, что дает поток_публикации моему приложению и назначает это разрешение своей странице.
- Окно закрывается, и теперь у меня есть вся информация, необходимая для запуска сценария в cron, чтобы отправить данные в поток этой страницы.
Я читаю вики несколько дней.Примечания к pyfacebook устарели как минимум на год, и люди указали мне на социальный автор приложение для Django, которое выглядит столь же устаревшим и ориентировано на пользователей, а не на их страницы.Я даже не могу сделать №1, не говоря уже о №2 и 3.
Если бы кто-нибудь мог показать мне, как использовать Django/Python для запроса/получения разрешения на запись в поток Facebook, это было бы отличным началом.
Любая помощь будет принята с благодарностью.
Решение 2
После долгих усилий я, похоже, решил все свои проблемы в Facebookland:
- Оказывается, заставить пользователя нажать кнопку для предоставления разрешений так же просто, как и сказал Кайо Ромао.Однако со своей стороны я обнаружил, что направить их на ссылку в настольном приложении Facebook было намного проще и надежнее.
- Используя этот метод ссылки, Facebook позволяет вам указать
enable_profile_selector=1
который обеспечит создание списка страниц, из которого пользователь может выбрать, какие страницы (если таковые имеются) предоставят эти разрешения. - Хотя для этого Фейсбук полностью сломан.В то время как в № 2 они позволяют пользователю выбирать страницу для предоставления разрешений, они не передают эту информацию в приложение либо посредством POST, либо в заголовках.Его просто нет.Вместо этого вам придется проделать ужасный трюк с FQL и задать несколько дополнительных вопросов пользователю, чтобы все заработало.
В любом случае, я подробно все это в моем блоге если кому интересно.Спасибо за вашу помощь!
Другие советы
Вы посмотрели минифб?Их страница примеров показывает практически все, что вам нужно знать, чтобы запросить авторизацию и получить сеансовый ключ.(Так же страница github для pyfacebook показывает, что библиотека еще жива)
Итак, для вашего сценария вам понадобится:
- Запросите разрешение «stream_publish».Есть некоторые способы чтобы это сделать, но я бы выбрал самый простой вариант: отправка формы (обратите внимание, я никогда не создавал приложение для Facebook, возможно, я ошибаюсь, полагая, что этот подход самый простой :-)
- Используйте приложение как обычно:вызовите методы API, используя user_id пользователя, который авторизовал ваше приложение (вам придется сохранить его), и, поскольку вы были авторизованы, это не должно привести к сбою.
Для этого добавьте в свой шаблон эту форму:
<form promptpermission="publish_stream">
<input type="submit" value="Allow Publish Stream">
</form>
Кстати, спасибо разработчикам Facebook.Очень хорошая официальная документация.
РЕДАКТИРОВАТЬ:Мне пока не разрешено комментировать, поэтому:Если вы столкнулись с проблемами получающий юид, проверь этот вопрос и ссылки.