Pyfacebook + Google App Engine: не могу найти новые функции в facebook.py

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

Вопрос

Я пытаюсь использовать функции Pyfacebook (https://github.com/sciyoshi/pyfacebook/) в проекте Google App Engine. Я последовал советам на форуме разработчиков Facebook (http://forum.developers.facebook.net/viewtopic.php?pid=164613) и добавил дополнительные функции в файл __init__.py, скопировал этот файл в корне. каталог моего проекта и переименован в его facebook.py. Импортировав Facebook.py, я добавил следующее в метод Get (Self) для класса Python для страницы:

facebookapi = facebook.Facebook(API_KEY, SECRET)

    if not facebookapi.check_connect_session(self.request):
        path = os.path.join(os.path.dirname(__file__), 'templates/login.html')
        self.response.out.write(template.render(path, {'apikey': API_KEY}))
        return

    user = facebookapi.users.getInfo(
        [facebookapi.uid],
        ['uid', 'name', 'birthday', 'relationship_status'])[0]

    template_values = {
        'name': user['name'],
        'birthday': user['birthday'],
        'relationship_status': user['relationship_status'],
        'uid': user['uid'],
        'apikey': API_KEY
    }

    path = os.path.join(os.path.dirname(__file__), 'templates/index.html')
    self.response.out.write(template.render(path, template_values))

При его запуске я получаю следующую ошибку:

Файл " много baw08u private ids halloworld helloworld.py", строка 54, в Get

Если не facebookapi.check_connect_session (self.request): attributeError: «Facebook». Объект нет атрибута 'check_connect_session'

Таким образом, кажется, это хорошо загружает API Facebook, но не новые методы, которые я добавил. Я скопировал и вставил код с форума разработчиков в нижней части определения класса Facebook и убедился, что все отступление было правильным, но он все еще не поднимает их. Кто -нибудь знает, в чем может быть проблема?

Спасибо

Бен

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

Решение

Вы верите Facebook У класса есть определенный метод, но Python уверен, что это не так. Почему? Может быть, вы неправильно написали имя метода, возможно, вы не получили правильного отступления - трудно сказать, не видя кода.

Вы могли бы попробовать ковыпать, чтобы подтвердить свои предположения:

import facebook
import logging

logging.warn('Facebook class: %r', dir(facebook.Facebook))
logging.warn('facebook module: %r', dir(facebook))

Если вы уверены, что работаете в правильном файле, вы должны ожидать, что CHECK_CONNECT_SESSION как метод Facebook. Если вы не добавили достаточного количества отступления, вы ожидаете увидеть check_connect_method как функцию, определенную в модуле Facebook. Слишком много отступок заставит check_connect_method подложкой, которую предшествует его методу, и он не будет отображаться в приведенном выше журнале. Обратите пристальное внимание на углубление.

Однако лучшим способом добавить некоторые пользовательские методы могут быть:

import facebook

class Facebook(facebook.Facebook):
    def check_connect_session(request):
        pass

facebookapi = Facebook(API_KEY, SECRET)

if not facebookapi.check_connect_session(...):
    ...

Теперь, когда Facebook обновляет их код, вы просто копируете новый файл на место - не нужно объединять свои настройки.

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