在FBML pyfacebook app中需要扩展权限

时间:2010-03-13 22:42:17

标签: django facebook pyfacebook

我正在尝试让我的FBML画布页面自动提示新应用用户获得publish_stream的权限。在Facebook's documentation之后,我尝试将require_permissions参数用于require_login。也就是说,我尝试使用pyfacebook require_login装饰器,如下所示:

@facebook.require_login(required_permissions='publish_stream')

如:

@decorator_from_middleware(FacebookMiddleware)
@facebook.require_login(required_permissions='publish_stream')
def canvas(request, template):
   ...

在基于pyfacebook的Facebook iFrame应用has been discussed中请求扩展权限。 在FBML应用too中请求扩展权限。我的目标是在FBML应用程序中要求扩展权限。我错过了什么或者有人可以建议解决方法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

是的,pyfacebook尚不支持required_permissions的{​​{1}},但您可以手动调用(或者更确切地说,重定向到)login。我刚刚为我的目的编写了以下装饰器:

authorize

您可能需要调整def require_permissions(*names): """Require extended permissions. XXX: in theory, the facebook.require_login() decorator should support this, but doesn't in pyfacebook yet.""" def decorator(fn): required_perms = set(names) def wrapper(request, *args, **kwargs): fb = request.facebook perms = set() if fb.ext_perms is None \ else set(fb.ext_perms.split(',')) if not required_perms.issubset(perms): missing = required_perms.difference(perms) url = fb.get_ext_perm_url(','.join(missing), next='%s%s' % (fb.get_app_url(), request.path[1:])) print url return fb.redirect(url) return fn(request, *args, **kwargs) return wrapper return decorator 的值,因为它传递给next,但这应该没问题(适合我)。用法示例:

get_ext_perm_url