如何使用Python / Django在Facebook中获取(和使用)扩展权限

时间:2009-12-27 23:56:17

标签: python django facebook pyfacebook

我正在尝试编写一个简单的应用程序,允许用户授予我的代码权限以写入她的页面的Facebook流。据我了解,它应该像以下一样简单:

  1. 让用户点击一个按钮,启动包含我的Facebook应用程序页面的弹出窗口。
  2. 在该页面中,他们点击向我的应用授予stream_publish的内容,并将该权限分配给他们的网页。
  3. 窗口关闭,我现在拥有在cron中运行脚本以将内容推送到该页面流所需的所有信息。
  4. 我已经阅读了wiki好几天了。关于pyfacebook的说明至少已过期一年了,人们已经向我指出了Django的socialauth应用,它似乎同样过时了,专注于定位用户而不是网页。我甚至不能在那里做#1,让#2和3。

    如果有人可以告诉我如何使用Django / Python来请求/获得写入Facebook流的权限,那将是一个很好的开始。

    非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

你看过minifb了吗?他们的examples page基本上显示了您需要知道的请求授权和接收会话密钥的所有内容。 (另外,github page for pyfacebook显示库仍然存在)

因此,对于您的场景,您需要:

  1. 请求“stream_publish”权限。有some ways这样做,但我实际上是最简单的:submitting a form(注意我从来没有为Facebook做过应用程序,我可能错了,假设这种方法最简单: - )
  2. 正常使用您的应用程序:使用授权您的应用程序的用户的user_id调用API方法(您必须存储它),并且,由于您已获得授权,因此不会失败。
  3. 为此,基本上,在您的模板上添加此表单:

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

    顺便说一下,向Facebook开发者致敬。非常好的官方文档。

    编辑:我不允许发表评论:如果您遇到获取 uid的问题,请检查this question和参考文件。

答案 1 :(得分:1)

经过大量的修补,我似乎已经解决了我在Facebookland的所有问题:

  1. 事实证明,让用户点击按钮授予权限就像CaioRomão所说的那样简单。尽管如此,我发现将它们引导到Facebook桌面应用程序链接更方便,更可靠。
  2. 使用此链接方法,Facebook允许您指定enable_profile_selector=1,这将确保生成一个页面列表,用户可以从中选择哪些页面(如果有)将授予这些权限。
  3. 对于这一个, Facebook完全被打破。在#2中,它们允许用户选择要授予权限的页面,他们不会通过POST或标题将此信息传递到应用程序。它不在那里。相反,你必须使用FQL做一个丑陋的技巧,并向用户提出一些其他问题,以使其工作。
  4. 无论如何,我detailed it all on my blog如果有人有兴趣的话。谢谢你的帮助!