2013-03-05 4 views
-2

Я использую питона SDK Facebook, чтобы получить адрес электронной почты пользователяfacebook пользователь мне питон

import facebook as facebooksd 
cookie = facebooksd.get_user_from_cookie(self.request.cookies, 
    FACEBOOK_APP_ID, FACEBOOK_APP_SECRET) 
graph = facebooksd.GraphAPI(cookie["access_token"]) 
current_user = graph.get_object("me") 

К сожалению, я получаю следующее сообщение об ошибке с указанным кодом:

global name 'self' is not defined 

Как я могу получить cookie от Facebook, чтобы подключиться к функции facebooksd.get_user_from_cookie выше? Благодаря!

+2

Чтобы подключить * что * функция выше? Я не вижу, чтобы вы определяли какую-либо функцию. Если вы можете предоставить [SSCCE] (http://sscce.org), это может помочь. –

+1

Ошибка довольно самообвиняясь или нет? self не определено, потому что вы используете его вне любой структуры класса. Скорее, можно скопировать вставку кода, который вы должны изучить в api, какой объект требуется этой функции, и где вы можете использовать функцию – Curlew

+0

Какую оболочку Python GraphAPI вы используете? http://www.pythonforfacebook.com, или один из четырех других? – abarnert

ответ

1

Конечно, без фактического следа и пробегаемого образца трудно быть положительным. Но ваша проблема почти наверняка произойдет, прежде чем вы даже попасть в какой-либо код Facebook, в середине вашей второй линии:

import facebook as facebooksd 
cookie = facebooksd.get_user_from_cookie(self.request.cookies, 
    FACEBOOK_APP_ID, FACEBOOK_APP_SECRET) 

Вы можете разделить эту вторую строку на части:

import facebook as facebooksd 
cookies = self.request.cookies 
cookie = facebooksd.get_user_from_cookie(cookies, 
    FACEBOOK_APP_ID, FACEBOOK_APP_SECRET) 

И даже двигаться вторая линия к вершине:

cookies = self.request.cookies 
import facebook as facebooksd 
cookie = facebooksd.get_user_from_cookie(cookies, 
    FACEBOOK_APP_ID, FACEBOOK_APP_SECRET) 

и удалить все остальное:

cookies = self.request.cookies 

И voila, те же ошибки, без какого-либо кода Facebook.

Вы пытаетесь получить доступ к глобальной переменной с именем self, и такой переменной нет. Как указано в сообщении об ошибке.

Итак, как вы это исправите? Ну, это зависит. Что вы сделали ожидаетеself.request.cookies будет? Откуда он должен быть? Если вы скопировали и вставляли это из какого-либо другого кода (где предположительно это часть метода на каком-то объекте, где self ссылается на этот объект), вы должны сделать все, что делает этот код, чтобы получить куки.

+0

Хорошая демонстрация о том, как проследить проблемы, не испортив OP с очевидными ответами. – woozyking