FBML pyfacebookアプリで拡張権限が必要
-
19-09-2019 - |
質問
私は自動的にpublish_streamする許可のための新しいアプリのユーザーを促すために私FBMLのキャンバスページを取得しようとしています。私はrequire_loginするrequired_permissions引数を使用してみました Facebookのドキュメントを以下に示します。それは私がこのような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アプリで拡張権限<のhref = "https://stackoverflow.com/questions/2397201/request-extended-permissions-in-facebook-django- pyfacebookは "> に議論されてきました。 要求 FBMLアプリで拡張アクセス許可は、。私の目標は、のFBMLアプリでの拡張権限を必要としています。私は何かが足りないか、誰もが回避策を提案することができますか?
感謝します。
解決
右、pyfacebook
はまだrequired_permissions
ため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
の値を微調整する必要がありますが、これはそうでない場合は問題ないはずです(私のために動作します)。使用例:
@facebook.require_login()
@facebook.require_add()
@require_permissions('email', 'offline_access')
def index(request):
# ...
所属していません StackOverflow