我怎么能在使用python时不分发我的密钥(facebook api)?

时间:2009-07-07 15:15:30

标签: python facebook

我是第一次使用PyFacebook api编写facebook桌面应用程序。到目前为止,由于我一直在试验,我只是将秘密密钥和api密钥一起传递给Facebook构造函数,如下所示:

import facebook
fb = facebook.Facebook("my_api_key", "my_secret_key")

然后登录(fb.login()打开浏览器)没有任何问题。但现在,我想分发代码,因为它是python和opensource,我想有一些方法来保护我的密钥。维基提到我可以使用服务器并在每次我的应用程序运行时使用服务器询问我的密钥(据我所知),但我不知道如何开始这样做,以及如何做到这一点。我从来没有做过Web编程,也不知道我在哪里可以获得服务器,以及如何让服务器在这种情况下执行所需的操作,而且我不知道如何使用该服务器。我真的很感激一些帮助!

谢谢。

2 个答案:

答案 0 :(得分:3)

relevant page on the FB developer wiki建议服务器组件只保留您的密钥并处理auth.getSession(),然后为您的桌面应用程序提供会话密钥。有关详细信息,请参阅该链接。

答案 1 :(得分:1)

编辑:cmb的会话密钥方法优于下面描述的代理。配置文件和GAE仍然适用。 / EDIT

你可以采取几种方法。如果您的代码是开源的并且将由其他开发人员使用,则可以允许在配置文件中设置密钥。分发代码时,在文件中放置一个虚拟密钥,并创建一些有关如何在配置文件中获取和设置密钥的说明。

或者,如果您想要执行服务器方法,您基本上将创建一个代理*,它将接受请求,添加密钥然后将它们转发到Facebook。一个好的,免费的(除非/直到你的应用程序获得了很多用户)基于Python的服务是Google App Engine。他们还有一堆教程视频可以帮助您入门。

*例如,当调用myservice.appspot.com/getUserInfo?uid=12345时,您的服务将执行如下操作。

userinfo = fb.users.getInfo(self.request.get('uid')...)

理想情况下,您需要对其进行抽象,以便不必显式实现您所做的每个FB API调用。

要记住的最后一件事是许多FB API调用不需要传递密钥。