How to get (and use) extended permissions in Facebook with Python/Django

こ雲淡風輕ζ 提交于 2019-12-03 09:22:57

问题


I'm trying to write a simple app that lets a user grant my code permission to write to her page's Facebook stream. As I understand it, it should be as easy as:

  1. Have the user click on a button that launches a popup containing the a page in my Facebook app.
  2. In that page, they click on something that grants stream_publish to my app and assigns that permission to their page.
  3. Window closes, I now have all the info I need to run a script in cron to push stuff to that page's stream.

I've been reading the wiki for days. Notes on pyfacebook are at least a year out of date, and people have pointed me to the socialauth app for Django which appears to be equally out of date and focused on targeting users as opposed to their pages. I can't even do #1 up there, let along #2 and 3.

If someone could show me how to use Django/Python to request/receive permission to write to a Facebook stream, that would be a great start.

Any help would be greatly appreciated.


回答1:


Have you looked at minifb? Their examples page shows basically everything you need to know to request authorization and receive a session key. (Also, the github page for pyfacebook shows that the library is still alive)

So, for your scenario you'd need:

  1. Request the "stream_publish" permission. There are some ways to do it, but I'd actually go for the easiest: submitting a form (note I've never done an app for facebook, I'm probably wrong assuming this approach is the easiest :-)
  2. Use your application normally: call the API methods using the user_id of the user that authorized your application (you'll have to store it) and, since you were authorized, it shouldn't fail.

For this, basically, add this form on your template:

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

Kudos to the Facebook developers, by the way. Very nice official documentation.

EDIT: I'm not allowed to comment yet so: Should you face problems getting the uid, check this question and the references.




回答2:


After a lot of tinkering, I appear to have solved all of my problems in Facebookland:

  1. Turns out that having a user click on a button to grant permissions is as easy as Caio Romão said it was. For my part though, I found that directing them to the Facebook Desktop App link was way easier and more dependable.
  2. Using this link method, Facebook allows you to specify enable_profile_selector=1 which will make sure that a list of pages is generated from which the user can select which pages (if any) will grant these permissions.
  3. For this one though, Facebook is totally broken. While in #2 they allow the user to select a page to grant permissions, they don't pass this information onto the application either by way of a POST or in the headers. It's just not there. Instead, you have to do an ugly trick with FQL and some additional questions to the user to make it work.

Anyway, I detailed it all on my blog if anyone is interested. Thanks for your help!



来源:https://stackoverflow.com/questions/1967438/how-to-get-and-use-extended-permissions-in-facebook-with-python-django

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!