2013-03-05 83 views
-2

我使用Facebook的蟒蛇SDK來獲取用戶的電子郵件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 

如何獲得來自Facebook的cookies插入到上面的facebooksd.get_user_from_cookie函數中?謝謝!

+2

插入*上面的*函數?我沒有看到你定義任何功能。如果您可以提供[SSCCE](http://sscce.org),那可能會有所幫助。 – 2013-03-05 20:42:05

+1

錯誤是相當自我解釋或不?自我沒有定義,因爲你在任何類結構之外使用它。相反,可以複製粘貼一些代碼,你應該看看api這個函數需要什麼對象,以及你可以在哪裏使用函數 – Curlew 2013-03-05 20:45:31

+0

你正在使用哪種Python GraphAPI包裝器? http://www.pythonforfacebook.com,或其他四個之一? – abarnert 2013-03-05 20:45:59

回答

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 

瞧,同樣的錯誤,沒有任何Facebook代碼。

您正試圖訪問名爲self的全局變量,並且沒有這樣的變量。正如錯誤消息所述。

那麼,你如何解決這個問題?那麼,這取決於。你是什​​麼預計self.request.cookies是?它應該從哪裏來?如果您從其他代碼複製並粘貼了該代碼(其中大概是某個對象上的方法的一部分,其中self指向該對象),則必須執行任何代碼才能獲取Cookie。

+0

良好的示範如何通過不破壞OP顯而易見的答案來追查問題。 – woozyking 2013-03-05 20:52:26