Domanda

Sto cercando di ottenere il mio FBML tela pagina di richiesta automatica della nuova app agli utenti il permesso di publish_stream.Di seguito Facebook documentazione Ho provato ad usare il required_permissions argomento require_login.Che è, ho provato ad usare il pyfacebook require_login decoratore come questo:

@facebook.require_login(required_permissions='publish_stream')

come in:

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

La richiesta di autorizzazioni estese in un pyfacebook a base di Facebook iFrame app è stato discusso. La richiesta di autorizzazioni estese in un FBML app troppo.Il mio obiettivo è quello di richiedono autorizzazioni estese in un FBML app.Mi manca qualcosa, o qualcuno può suggerire una soluzione?

Grazie.

È stato utile?

Soluzione

A destra, pyfacebook non supporta ancora required_permissions per login, ma si può chiamare (o meglio, il reindirizzamento a) authorize manualmente.Ho appena scritto la seguente decoratore per i miei scopi:

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

Devi modificare il valore di next come è passato a get_ext_perm_url, ma questo dovrebbe altrimenti essere belle (per me).Esempio di utilizzo:

@facebook.require_login()
@facebook.require_add()
@require_permissions('email', 'offline_access')
def index(request):
   # ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top