2011-06-09 66 views
1

我已經安裝了djangosocialregistration,它好像工作正常,但現在我得到一個錯誤,我不能圖從哪裏來。在我的觀點,我這樣做是爲了開始看API ...使用django-socialregistration獲取'Facebook'對象沒有任何屬性'圖'

me = request.facebook.graph.get_object("me") 

和我得到這個...

「Facebook的對象有沒有屬性「曲線」

退出工作後,我回滾了一下我做的一些小改動,重置了所有內容,刪除了cookies,但仍然無法使用。我正在運行django 1.1.1,但升級有點困難,但並非不可能。我一直在重新加載一堆試圖讓它工作,有沒有可能在他們的結尾Facebook的限制登錄連接?

回答

1

在socialregistration的中間件Facebook類看起來是這樣的:

class Facebook(object): 
    def __init__(self, user=None): 
     if user is None: 
      self.uid = None 
     else: 
      self.uid = user['uid'] 
      self.user = user 
      self.graph = facebook.GraphAPI(user['access_token']) 

如果沒有用戶設置__inii__它根本不會設置。在中間件,這應該通過設置:

fb_user = facebook.get_user_from_cookie(request.COOKIES, getattr(settings, 'FACEBOOK_APP_ID', settings.FACEBOOK_API_KEY), settings.FACEBOOK_SECRET_KEY) 

request.facebook = Facebook(fb_user) 

所以我猜,Facebook的cookie沒有設置爲您的網站。也許你會添加一些調試日誌記錄來確定是否有來自Facebook的cookie。

另一種猜測是request.facebook被覆蓋了某處。也許你也檢查一下。

+0

是的,我想挖掘中間件,看看它是如何工作的,所以我看到了這個。一時興起,我將Facebook類定義複製到了我的視圖中,而且這樣做!所以可能由於某些未知的原因,中間件沒有在正確的位置加載。我對我的Django版本有點懷疑。感謝您的幫助,絕對推動我朝着正確的方向發展。 – 2011-06-09 19:15:01

+0

@DanAncona你可以更具體地瞭解你改變了什麼以及在哪裏?在項目的github頁面上存在一個關於這個問題的錯誤,作者聲稱他在最近的一些提交中已經修復了它。即使使用非PyPi版本並在特定提交上籤出也沒有幫助我追蹤它。我嘗試將中間件放在我的中間件堆棧中的每個位置,並且沒有任何改變。 – Bryson 2011-11-09 02:05:44

+0

我碰到的一個問題是,我在Windows上有可重複的,一致的登錄問題,而在Mac OS上一切都很花哨。我最終追蹤到了Facebook的python庫中的問題。我整合了這個facebook.py的黑客版本,並最終得到它的工作: https://gist.github.com/1190267 我設置它,以便如果get_user_from_cookie失敗,它會嘗試新版本。可能不是超級優化,但我有一個瘋狂的(選舉)最後期限,它似乎工作。 – 2011-11-29 06:48:06