Циклическое перенаправление с помощью PyFacebook и Google App Engine

StackOverflow https://stackoverflow.com/questions/2349368

Вопрос

У меня есть проект Facebook на Python, размещенный на Google App Engine, и я использую следующий код для обработки инициализации Facebook API с помощью 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, но это тоже продолжало давать сбои.Кто-нибудь знает, что я могу сделать, чтобы исправить это?

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

Это было полезно?

Решение

Просто со мной сегодня произошло то же самое, что и со мной!Что, я думаю, происходит, так это то, что fbapi.check_session() неправильно устанавливает fbapi.added .Я не думаю, что Опубликовать URL-адрес добавления больше не содержит 'installed', но по-прежнему содержит 'fb_sig_added'.Следующее изменение (код в стиле github) в 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

Другие советы

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

исправление для движка приложений и pyFacebook не работают

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top