我正在嘗試使用應用程序引擎補丁和pyFacebook編寫一個facebook應用程序。 我只使用每個工具提供的示例,但由於某種原因它不起作用。應用程序引擎補丁和pyFacebook不工作
我已合併兩個就像在接受answet說明如下: Facebook, Django, and Google App Engine
應用程序引擎補丁似乎工作得很好,但是當我嘗試使用@ facebook.require_login()從我得到這個GAE的日誌:
Exception in request:
Traceback (most recent call last):
File "/base/data/home/apps/app-name/1.339079629847560090/common/zip-packages/django-1.1.zip/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/base/data/home/apps/app-name/1.339079629847560090/facebook/djangofb/__init__.py", line 87, in newview
if not fb.check_session(request):
File "/base/data/home/apps/app-name/1.339079629847560090/facebook/__init__.py", line 1293, in check_session
self.session_key_expires = int(params['expires'])
ValueError: invalid literal for int() with base 10: 'None'
這happends無論哪查看我@ facebook.require_login()
裝點我使用兩個項目最新的,我不知道爲什麼它不會工作。
非常感謝您的時間。
更新:我做了一個pyfix的quickfix,但我忘了把它放回線程中。
現在也作爲答案,因爲它似乎是唯一的方法。
如果更改此的Facebook/__ init__.py線1292+:
if params.get('expires'):
self.session_key_expires = int(params['expires'])
要這樣:
if params.get('expires'):
if params['expires'] == 'None':
params['expires'] = 0
self.session_key_expires = int(params['expires'])
它會工作,但它是一個黑客,也許它可以做更優雅,但它的作品。 總得把pyFacebook開發者指向這個主題,也許他們會有更好的解決方案。
我遇到同樣的問題。在示例AEP應用程序的目錄結構中,您是否放置了Py Facebook的東西? – Bialecki 2010-01-11 02:42:59
哦,順便說一下,這種情況發生的原因是Facebook代碼預期爲None的瀏覽器cookie設置爲字符串「None」,然後嘗試解析。我不知道爲什麼cookie被設置或錯誤是什麼,放這就是爲什麼它發生。你會發現如果你清除你的cookies,然後打你的網站,它會突然重定向到Facebook。這並沒有解決問題,但它是更多的信息。 – Bialecki 2010-01-11 02:45:52
我把facebook目錄放在AEP樣本目錄的根目錄下。 正如鏈接中所述,他們似乎能夠使其工作。 感謝您提供cookie的提示,將盡量對它稍作修改。 – 2010-01-11 14:17:11