如何确定Facebook iFrame是否正在请求网址?

时间:2011-01-25 00:24:27

标签: python django facebook http google-app-engine

我有一个Google App Engine应用程序,如果请求来自Facebook应用程序,我想提供不同的django模板。我怎么能检测出来?我没有在标题中看到任何独特的东西。

我目前正在使用网址格式:

r'/user/(.*)' 

映射到“用户”请求处理程序。我想我可以这样做:

r'/(.*)/user/(.*)'

并参数化路径的第一部分并检查“facebook”。这需要我确保在facebook iFrame中提供的所有内部链接都是/ facebook /。这种方法有危险吗?

2 个答案:

答案 0 :(得分:1)

.run_wsgi_app(webapp.WSGIApplication([(r'/page/(.*)', Page),
                (r'/user/(.*)', UserProfile),
                (r'/category/(.*)', CategoryProfile),  
                (r'/location/(.*)', LocationProfile),
                (r'/facebook/page/(.*)', Page),
                (r'/facebook/user/(.*)', UserProfile),
                (r'/facebook/category/(.*)', CategoryProfile),  
                (r'/facebook/location/(.*)', LocationProfile), 
                ('/facebook/', BaseHandler),
                ('/', BaseHandler)],
                debug=DEBUG))

然后在每个Handler中我检查了/ facebook / path:

if re.search(r".facebook\.*", path):

如果为True,那么我会转到相应的“facebook”模板。

答案 1 :(得分:0)

检测facebook iframe的最佳方法是比较HTTP_REFERER

import os
if os.environ['HTTP_REFERER'].find('http://apps.facebook.com/<Facebook_URLID>/') is not 0:
   self.redirect('<Facebook_Application_Page>')

请注意,它可能不会一直存在,所以首先检测到密钥。

如果您的引用者与您的应用程序URL匹配,则传递控件,否则将页面重定向到您的Facebook应用程序。

希望这会对你有所帮助。 :)