Facebook应用程序托管在谷歌应用程序引擎上
我是Facebook应用程序的新手,我已经有一个应用程序在GAE上运行(使用python)。我想将它与Facebook集成,这样我就可以访问一些用户的数据来帮助我个性化应用程序(如喜欢的页面、兴趣、他们来自哪里等数据)。并分享应用程序的输出,让朋友看到 我想我会选择上的Facebook应用程序选项 我不知道从哪里开始,有一些教程(大多数都很旧,有些使用的脚本不推荐使用,所以有点令人担忧),还有FBML。。我在想,也许我只需要使用Facebook的登录,然后使用FQL访问这些数据,就可以获得相同的数据 我不知道我是否会被新的https限制所困扰(Facebook说,从2011年10月起,必须有SSL证书) 所以底线是。。我从哪里开始Facebook应用程序托管在谷歌应用程序引擎上,facebook,google-app-engine,facebook-graph-api,facebook-fql,python-2.7,Facebook,Google App Engine,Facebook Graph Api,Facebook Fql,Python 2.7,我是Facebook应用程序的新手,我已经有一个应用程序在GAE上运行(使用python)。我想将它与Facebook集成,这样我就可以访问一些用户的数据来帮助我个性化应用程序(如喜欢的页面、兴趣、他们来自哪里等数据)。并分享应用程序的输出,让朋友看到 我想我会选择上的Facebook应用程序选项 我不知道从哪里开始,有一些教程(大多数都很旧,有些使用的脚本不推荐使用,所以有点令人担忧),还有FBML。。我在想,也许我只需要使用Facebook的登录,然后使用FQL访问这些数据,就可以获得相同的
您需要根据Facebook验证您的服务器应用程序(GAE):您需要实现 请参阅LeanEngine(开源)以获取示例实现: 一旦您通过身份验证并获得用户FB auth token,您就可以使用来获取各种数据。我们开始: 从该链接下载:: 从下载中,您将有:
signed_request.py
解析facebook将在您的
画布url:https://apps.facebook.com/myapp
inPOST
方法
和graph\u api.py
对graphapi
注意:您将包括来自facebook js sdk编写的cookies的访问令牌。关于FBJSSDK,请参见以下答案:javascript部分 在索引页中:
fb_app_secret='abcd...'
fb_app_id = 123345
def index(request):
if request.POST:
signed_request_param = request.POST.get('signed_request)
if signed_request_param:
#signed_request.py
signed_request_dic = signed_request.parse_signed_request(signed_request_param, fb_app_secret)
if signed_request_dic:
if signed_request_dic.has_key('user_id'):
fb_uid = signed_request_dic['user_id']
#you got your man that is previously authorized your fb app : mypp
对于连续呼叫,您将使用我上面提到的cookies:
def my_page(request):
my_dict = None
my_dict = signed_request.get_user_from_cookie(request.COOOKIES, fb_app_id, fb_app_secret)
if my_dict:
if my_dict.has_key('uid'):
fb_uid = my_dict['uid']
fb_uid = int(fb_uid)
#you got your registered user again.
对于注册,我已经提到了从FBJSSDK进行注册的最简单方法
#finally for SSL, in your app.ymal:
- url: .*
script: django_bootstrap.py
secure: optional
不要忘记为internet explorer设置P3P,iframre cookie问题:
def my_page(request):
....
response = render_to_response('mypage.html', view_params )
response["P3P"] = 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'
return response
1.AppEngine不支持自定义服务器或客户端证书。2。Javascript可用于FB客户端流身份验证。OP需要基于服务器的感知。@Peter,你所做的一切都是用JS SDK抓取的令牌。很抱歉,AppEngine被限制为甚至不允许SSL。我建议找一个新的平台来开发,因为SSL现在是facebook应用程序的半“要求”。所以,客户端通过JS从FB获取令牌,然后将其传递给GAE服务器?不好,因为在这种情况下,GAE必须信任客户。你永远不应该信任互联网上的客户。这就是Facebook(和OAuth)有服务器端身份验证流的原因。此外,GAE有SSL,只是没有自定义证书。每个GAE应用程序都有一个由谷歌提供的完整有效的服务器证书。你可能想看看这个问题