应用程序引擎补丁和pyFacebook不工作
-
19-09-2019 - |
题
我试图使用APP-发动机贴片和pyFacebook写一个Facebook应用程序。 我使用的仅仅是提供与每个工具,由于某种原因,它不会工作的例子。
我已经联合两个正如这里所接受的answet描述: 脸谱,Django中,和谷歌应用程序引擎
应用程序引擎补丁似乎工作得很好,但是当我尝试使用@ 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()
我使用上述两个项目的最新的,我不知道为什么它不会工作。
您的时间非常感谢。
更新:我做了一个quickfix为pyFacebook,但我只是忘了把它放回线程
。现在也作为一个答案,因为它似乎是唯一的方法。
如果你改变的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开发者此主题,也许他们将有更好的解决方案。
解决方案 2
如果你改变的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与Facebook连接时,不应使用pyfacebook的装饰@facebook.require_login()
。该装饰是指用于一个Facebook应用程序,因为它的用户重定向到Facebook网站,如果他们还没有登录,但你真的希望将用户登录页面重定向您的网站,如果他们还没有登录。
要检查是否有人登录时使用Facebook的连接和与djangofb中间件pyfacebook,你叫request.fb.check_session(request)
。如果check_session
返回true,则他们有一个有效的会话。如果返回false,那么你需要将用户重定向到登录页面,使他们可以点击Facebook的连接登录按钮,你(应该)都放在该页面上。