python richiesta di autenticazione (access_token)

Sto cercando di fare una query API in python. La riga di comando

curl --header "Authorization:access_token myToken" https://website.com/id

dà alcuni output json. myToken è una variabile esadecimale che rimane costante per tutto. Vorrei fare questa chiamata da python, in modo che io possa loop attraverso diversi id e analizzare l’output. Tutte le idee? Prima di autenticazione è necessario, io l’ho fatto con urllib2. Ho anche dato uno sguardo alle richieste di modulo ma non riesco a capire come fare.

Molte grazie.

 

3 Replies
  1. 94

    Il le richieste di pacchetto ha un bel API per le richieste HTTP, l’aggiunta di un header personalizzato funziona in questo modo (fonte: documentazione ufficiale):

    >>> import requests
    >>> response = requests.get(
    ... 'https://website.com/id', headers={'Authorization': 'access_token myToken'})

    Se non si desidera utilizzare una dipendenza dall’esterno, la stessa cosa usando urllib2 della libreria standard simile a questa (fonte: the missing manual):

    >>> import urllib2
    >>> response = urllib2.urlopen(
    ... urllib2.Request('https://website.com/id', headers={'Authorization': 'access_token myToken'})
    • Grazie per la risposta. Ho provato entrambe le implementazioni e ottengo un Errore HTTP 401: non autorizzato. Tuttavia, la riga di comando funziona bene. Non ho mai lavorato con i token di accesso, così giusto per essere chiari: il token che ho è di 40 cifre del modulo 3f4264ff etc.
    • Strano. Quello che mi disturba un po ‘ è il colon nell’intestazione… ah! Forse mi (o ci sia 😉 basta leggere ciò che è male. L’intestazione può essere denominata “Autorizzazione” e il suo valore quindi sarebbe “access_token long_hexadecimal_string”. Vuole dare un giro?
    • che ha funzionato! vi ringrazio tanto. quello che ho finito di battitura url = ‘website.com/id testa = {‘Autorizzazione’: ‘access_token hex_string’} res=richieste.get(url, headers=testa)
    • Questa soluzione è sconsigliata o altrimenti non funziona in default Anaconda installare.
    • ho un altro problema in tutto questo. Ho una .py nel mio file di codice che utilizza le richieste get/put/post/eliminare con authToken generato da un POST specifico API. questo file è chiamato in un momento di esecuzione del servizio l’esecuzione. Quindi volevo sapere come aggiornare il token ogni volta che una richiesta di chiamata di api ottiene l’errore. C’è qualche offerta con le richieste di libreria per aggiungere ganci? O ho bisogno di usare un codice python per aggiornare il token.
    • Che cosa è access_token myToken? Da dove e come posso farlo? @wosc
    • Si tratta di un token di autenticazione che il server utilizza per verificare la facoltà di accedere alle API. È necessario ottenere le credenziali (username, password, chiave API) per l’API si desidera accedere e inviare loro (per esempio, mediante una richiesta get) per il server di autenticazione. Il server restituisce una stringa che può essere codificata JSON per il vostro client e quindi utilizzare che come un segno nella vostra chiamate API. Ricerca per JWT o OAuth per fare un po di più la lettura e visualizzare alcuni esempi.

  2. 19

    Ho avuto lo stesso problema quando si tenta di utilizzare un token con Github.

    L’unica sintassi che ha funzionato per me con Python 3:

    import requests
    
    myToken = '<token>'
    myUrl = '<website>'
    head = {'Authorization': 'token {}'.format(myToken)}
    response = requests.get(myUrl, headers=head)
    • Quale sarebbe il token qui? O come ottenere un token di autenticazione?
  3. 0

    Io aggiungo un po ‘ di suggerimento: sembra che si passa come il valore della chiave di un colpo di testa dipende dal tipo di autorizzazione, nel mio caso era PRIVATE-TOKEN

    header = {'PRIVATE-TOKEN': 'my_token'}
    response = requests.get(myUrl, headers=header)

Lascia un commento