تتطلب أذونات موسعة في تطبيق FBML Pyfacebook
-
19-09-2019 - |
سؤال
أحاول الحصول على صفحة قماش FBML الخاصة بي لتوجيه مستخدمي التطبيقات الجديدة تلقائيا للحصول على إذن للانتشار. التالي وثائق فيسبوك حاولت استخدام الوسيطة المطلوبة إلى المحتاجات_login. وهذا هو، حاولت استخدام pyfacebook contrant_login decorator مثل هذا:
@facebook.require_login(required_permissions='publish_stream')
كما هو الحال في:
@decorator_from_middleware(FacebookMiddleware)
@facebook.require_login(required_permissions='publish_stream')
def canvas(request, template):
...
جاري الطلب أذونات ممتدة في تطبيق Facebook مقيم في Facebook وقد ناقش. جاري الطلب أذونات موسعة في تطبيق 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):
# ...