سؤال

أحاول الحصول على صفحة قماش 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):
   # ...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top