2011-09-24 116 views
4

我收到了facebook javascript SDK和python requesthandler變量之間的衝突結果。 Javascript SDK表示我的用戶沒有登錄,這是正確的,而來自基本請求處理程序的模板變量則表示我的用戶已登錄並顯示用戶的名稱。是否有足夠的信息來說明錯在哪裏,或者我應該粘貼我認爲與此相關的代碼?有錯誤的登錄頁面的鏈接是here。我使用的示例稱爲來自Facebook的runwithfriends演示應用程序,並且該應用程序的所有內容都可以正常工作,除了僅使用來自應用程序的應用程序的邏輯而不需要用戶位於應用程序的iframe中。爲什麼有衝突的變量?

另外我似乎無法得到實時API的工作。我只能保存用戶ID並不刷新用戶數據 - 爲什麼?我的代碼,但我不知道什麼是最相關的,但這裏的一些請求處理的,相關的代碼基本上是完全一樣的一個從演示應用程序:

def render(self, name, **data): 
    logging.debug('render') 
    """Render a template""" 
    if not data: 
     logging.debug('no data') 
     data = {} 
    data[u'js_conf'] = json.dumps({ 
     u'appId': facebookconf.FACEBOOK_APP_ID, 
     u'canvasName': facebookconf.FACEBOOK_CANVAS_NAME, 
     u'userIdOnServer': self.user.id if self.user else None, 
    }) 
    data[u'logged_in_user'] = self.user #variable that is the problem 
    data[u'message'] = self.get_message() 
    data[u'csrf_token'] = self.csrf_token 
    data[u'canvas_name'] = facebookconf.FACEBOOK_CANVAS_NAME 
    self.response.out.write(template.render(
     os.path.join(
      os.path.dirname(__file__), 'templates', name + '.html'), 
     data)) 

而且更奇怪的,我也可以在JavaScript SDK說用戶已登錄並且模板變量logged_in_user另有說明的狀態下獲取應用程序。爲什麼變量衝突? 更新:這裏是奇怪的登錄流程截圖。我可以去我的網頁,並顯示來自Facebook的我的名字: enter image description here 後來,當我去到下一個頁面,它還要好吧,有我的名字 enter image description here 但是,如果我註銷,然後我在不可能的狀態得到:我的名字+登錄out

enter image description here 如何解決js和後端之間的這種奇怪衝突?

更新:由於我只有一個我的應用程序的這個問題,我可以採取什麼作品從我的其他應用程序和集成。此頁似乎從我的其他應用程序工作:http://cyberfaze.appspot.com/file/20985

回答

2

您的'用戶'可能是指Django用戶而不是Facebook用戶。確保使用自定義身份驗證後端正確地同步這兩個帳戶。帳號可能會不同步,即用戶切換瀏覽器。

請記住,Facebook Python SDK將在10月1日之後停止工作,除非他們將其更新到Oauth2.0,這不太可能。

我剛剛更新了django-facebook-graph以使用新的身份驗證流程。

+2

有一個Facebook的python SDK的版本已被修改爲支持在github上的OAuth 2.0 [這裏](https://gist.github.com/1190267) - 對於我的用例,我不得不調整它以更好地處理超時錯誤的情況下,但它確實工作。 –