Почему конфликтующие переменные? - PullRequest
4 голосов
/ 24 сентября 2011

Я получаю противоречивые результаты между javascript SDK facebook и переменными обработчика запросов python. Javascript SDK говорит, что мой пользователь не вошел в систему, что правильно, в то время как моя переменная шаблона, полученная из базового обработчика запросов, говорит, что мой пользователь вошел в систему и отображает имя пользователя. Достаточно ли информации, чтобы сказать, что не так, или я должен вставить код, который я считаю уместным здесь? Ссылка на страницу входа с ошибкой: здесь . Пример, который я использовал, называется демонстрационным приложением runwithfriends из Facebook, и все, что с этим приложением работало, за исключением использования логики из приложения только с веб-сайта, не требующего, чтобы пользователь был в фрейме приложения.

Плюс я не могу заставить работать API в реальном времени. Я могу только сохранить идентификатор пользователя, но не обновлять данные пользователя - почему? У меня есть код, но я не уверен, что наиболее актуально, но вот некоторые обработчики запросов, соответствующий код в основном точно такой же, как и в демонстрационном приложении:

def render(self, name, **data):
    logging.debug('render')
    """Render a template"""
    if not data:
        logging.debug('no data')
        data = {}
    data[u'js_conf'] = json.dumps({
        u'appId': facebookconf.FACEBOOK_APP_ID,
        u'canvasName': facebookconf.FACEBOOK_CANVAS_NAME,
        u'userIdOnServer': self.user.id if self.user else None,
    })
    data[u'logged_in_user'] = self.user #variable that is the problem
    data[u'message'] = self.get_message()
    data[u'csrf_token'] = self.csrf_token
    data[u'canvas_name'] = facebookconf.FACEBOOK_CANVAS_NAME
    self.response.out.write(template.render(
        os.path.join(
            os.path.dirname(__file__), 'templates', name + '.html'),
        data))

И, что еще более странно, я также могу получить приложение в состоянии, когда javascript SDK сообщает, что пользователь вошел в систему, а переменная шаблона logged_in_user говорит об обратном. Почему переменные конфликтуют? Обновление: вот скриншоты из странного потока входа в систему. Я могу перейти на мою страницу, и мое имя из Facebook появляется: enter image description here Затем, когда я перехожу на следующую страницу, она тоже выглядит хорошо и меня зовут enter image description here Но если я выйду из системы, то окажусь в невозможном состоянии: мое имя + вышло из системы

enter image description here Как мне разрешить этот странный конфликт между js и back-end?

Обновление: поскольку у меня есть эта проблема только для одного из моих приложений, я могу взять то, что работает из другого моего приложения, и интегрировать. Эта страница работает из моего другого приложения: http://cyberfaze.appspot.com/file/20985

1 Ответ

2 голосов
/ 25 сентября 2011

Ваш «пользователь», вероятно, имеет в виду пользователя Django, а не пользователя Facebook.Убедитесь, что вы синхронизируете две учетные записи правильно, используя пользовательский сервер аутентификации.Возможно, учетные записи не синхронизируются, т. Е. Если пользователь переключает браузеры.

Имейте в виду, что SDK Facebook Python перестанет работать после 1 октября, если они не обновят его до Oauth2.0, что маловероятно.*

Я только что обновил django-facebook-graph для работы с новым потоком аутентификации.

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