Цикл перенаправления с PyFacebook и Google App Engine - PullRequest
1 голос
/ 28 февраля 2010

У меня есть проект Python Facebook, размещенный на Google App Engine, и я использую следующий код для обработки инициализации API Facebook с помощью PyFacebook.

# 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, но это тоже не удавалось. Кто-нибудь знает, что я могу сделать, чтобы это исправить?

Я видел этот похожий вопрос но ответов нет.

Ответы [ 2 ]

2 голосов
/ 18 марта 2010

Сегодня со мной случилось то же самое! Я думаю, что происходит то, что fbapi.check_session () неправильно устанавливает fbapi.added. Я не думаю, что URL-адрес пост-добавления содержит «установленный» больше, но все еще имеет «fb_sig_added». Следующее изменение (код github-esque) в pyfacebook остановило бесконечный редирект для меня:

1244 | 1244 |     if request.method == 'POST':
1245 | 1245 |         params = self.validate_signature(request.POST)
1246 | 1246 |     else:
1247 |      | -       if 'installed' in request.GET:
     | 1247 | +       if 'installed' in request.GET or request.GET['fb_sig_added'] == '1':
1248 | 1248 |             self.added = True
0 голосов
/ 07 марта 2010

Проблема кажется знакомой. Можете ли вы использовать решение из моего вопроса здесь:

app-engine-patch и pyFacebook не работают

Но это было с декоратором, который поставляется с pyfacebook, поэтому он может отличаться.

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