2013-05-24 10 views
7

Ho trovato this Library sembra che sia quello ufficiale, quindi found this, ma ogni volta trovo una risposta, la metà di esso sono collegamenti a Facebook API Documentation che parla di Javascript o PHP e di come estrarlo dai collegamenti!Come ottenere il token di accesso di Facebook usando la libreria Python?

Come faccio a farlo con un semplice script Python?

NB: cosa non capisco davvero, perché utilizzare una libreria e non è possibile estrarre token se è possibile utilizzare urllib e regex per estrarre le informazioni?

risposta

6

Javascript e PHP possono essere utilizzati come linguaggi di sviluppo Web. È necessario un front-end Web affinché l'utente conceda l'autorizzazione per poter ottenere il token di accesso.

riformulato: non è possibile ottenere il token di accesso a livello di codice, ci deve essere l'interazione manuale

In Python si tratterà di configurazione di un server web, ad esempio, uno script per aggiornare feed utilizzando facepy

import web 
from facepy import GraphAPI 
from urlparse import parse_qs 

url = ('/', 'index') 

app_id = "YOUR_APP_ID" 
app_secret = "APP_SECRET" 
post_login_url = "http://0.0.0.0:8080/" 

user_data = web.input(code=None) 

if not user_data.code: 
    dialog_url = ("http://www.facebook.com/dialog/oauth?" + 
           "client_id=" + app_id + 
           "&redirect_uri=" + post_login_url + 
           "&scope=publish_stream") 

    return "<script>top.location.href='" + dialog_url + "'</script>" 
else: 
    graph = GraphAPI() 
    response = graph.get(
     path='oauth/access_token', 
     client_id=app_id, 
     client_secret=app_secret, 
     redirect_uri=post_login_url, 
     code=code 
    ) 
    data = parse_qs(response) 
    graph = GraphAPI(data['access_token'][0]) 
    graph.post(path = 'me/feed', message = 'Your message here') 
+0

ahhhh! quello di cui ho bisogno! soluzione completa, solo l'ultima domanda, 'post_login_url' è il link che ho registrato quando faccio la mia applicazione facebook (localhost: 8888)? – Abdelouahab

+1

@Abdelouahab come sopra crea un server web in locale: 8888 quindi sto semplicemente reindirizzando a local: 8888 dopo l'autenticazione quindi 'top.location.href' (anche se la risposta alla tua domanda è sì per questo specifico esempio) – phwd

+0

ah! quello che mi serve) grazie – Abdelouahab

2

ecco un Gist ho cercato di fare con Tornado dal momento che la risposta utilizza web.py

https://gist.github.com/abdelouahabb/5647185

+0

Ciao, non sono Ho familiarità con il tornado e ho difficoltà a capire dove devo inserire il mio token di accesso, il mio segreto dell'app e il mio ID app, puoi aiutarmi? – BioShock

9

Non sono sicuro se questo aiuti qualcuno, ma sono stato in grado di ottenere un oauth_access_token seguendo questo codice.

from facepy import utils 
app_id = 134134134134 # must be integer 
app_secret = "XXXXXXXXXXXXXXXXXX" 
oath_access_token = utils.get_application_access_token(app_id, app_secret) 

Spero che questo aiuti.

+0

grazie, usando il tornado aggiornerai sempre il token: D – Abdelouahab

Problemi correlati