Как определить, запрашивается ли URL с Facebook iFrame? - PullRequest
1 голос
/ 25 января 2011

У меня есть приложение Google App Engine, и я хочу использовать другой шаблон django, если запрос поступает из приложения Facebook. Как я могу это обнаружить? Я не вижу ничего уникального в заголовке.

Я сейчас использую шаблон URL:

r'/user/(.*)' 

для сопоставления с обработчиком запросов «пользователя». Я полагаю, что я мог бы вместо этого сделать:

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

и параметризовать первую часть пути и проверить «facebook». Это потребовало бы, чтобы я гарантировал, что все внутренние ссылки, размещенные в iFrame facebook, являются / facebook /. Есть ли опасность в этом подходе?

Ответы [ 2 ]

1 голос
/ 27 января 2011
.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))

Затем в каждом обработчике я проверял / facebook / path:

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

Если True, то я направил на соответствующий шаблон "facebook".

0 голосов
/ 04 апреля 2011

Лучший способ обнаружить iframe в Facebook - сравнить 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.

Надеюсь, это поможет вам. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...