【发布时间】:2010-02-27 23:28:16
【问题描述】:
我在 Google App Engine 上托管了一个 Python Facebook 项目,并使用以下代码使用 PyFacebook 处理 Facebook API 的初始化。
# Facebook Initialization
def initialize_facebook(f):
# Redirection handler
def redirect(self, url):
logger.info('Redirecting the user to: ' + url)
self.response.headers.add_header("Cache-Control", "max-age=0")
self.response.headers.add_header("Pragma", "no-cache")
self.response.out.write('<html><head><script>parent.location.replace(\'' + url + '\');</script></head></html>')
return 'Moved temporarily'
auth_token = request.params.get('auth_token', None)
fbapi = Facebook(settings['FACEBOOK_API_KEY'], settings['FACEBOOK_SECRET_KEY'], auth_token=auth_token)
if not fbapi:
logger.error('Facebook failed to initialize')
if fbapi.check_session(request) or auth_token:
pass
else:
logger.info('User not logged into Facebook')
return lambda a: redirect(a, fbapi.get_login_url())
if fbapi.added:
pass
else:
logger.info('User does not have ' + settings['FACEBOOK_APP_NAME'] + ' added')
return lambda a: redirect(a, fbapi.get_add_url())
# Return the validated API
logger.info('Facebook successfully initialized')
return lambda a: f(a, fbapi=fbapi)
我正在尝试设置它,以便我可以将此装饰器放在任何页面处理程序方法上,并验证用户是否已正确设置所有内容。问题是当重定向处理程序被调用时,它会启动一个无限循环的重定向。
我尝试使用 HTTP 302 重定向代替 JavaScript,但也一直失败。有谁知道我可以做些什么来解决这个问题?
我看到了这个similar question,但没有答案。
【问题讨论】:
-
您是否将装饰器应用于您要重定向到的页面的处理程序?
-
假设不适用于目标页面。目标页面应该来自 Facebook 生成的页面的 get_xxx_url() 调用。
标签: python google-app-engine redirect pyfacebook