我有一个Google App Engine应用程序,如果请求来自Facebook应用程序,我想提供不同的django模板。我怎么能检测出来?我没有在标题中看到任何独特的东西。
我目前正在使用网址格式:
r'/user/(.*)'
映射到“用户”请求处理程序。我想我可以这样做:
r'/(.*)/user/(.*)'
并参数化路径的第一部分并检查“facebook”。这需要我确保在facebook iFrame中提供的所有内部链接都是/ facebook /。这种方法有危险吗?
答案 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应用程序。
希望这会对你有所帮助。 :)