2011-01-26 1 views
0

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

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)) 

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

File "\much\baw08u\Private\IDS\helloworld\helloworld.py", line 54, in get

if not facebookapi.check_connect_session(self.request): AttributeError: 'Facebook' object has no attribute 'check_connect_session'

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

Благодаря

Ben

+0

Вы добавили методы в facebook.Facebook (должен работать) или функции в facebook (не предполагается работать, если вы не используете facebook.function_name)? – TryPyPy

+0

Да, это все в facebook.Facebook - проверял отступы и все такое. Кто-нибудь имеет копию измененного \ __ init__.py, который я могу проверить, чтобы увидеть, связано ли это с синтаксисом? – benwad

+0

Есть ли скомпилированная версия? Удали это. –

ответ

2

Вы верите, что 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 обновить свой код, который вы просто скопировать новый файл на место - не нужно сливаться ваши настройки.

+0

Я попробовал предупреждение, и он сказал, что моих методов все еще нет. Я попытался поместить его в разные места в классе, и он все еще не работает. Вот ссылка на мою измененную facebook.py: методы определены начиная с строки 1944. У меня такое чувство, что я смотрю прямо на ошибку, но не вижу ее ... http://pastebin.com/ wTVYBumB – benwad

+0

Слишком много отступов :-) Вы создали вложенную функцию, а не метод. – user103576

 Смежные вопросы

  • Нет связанных вопросов^_^