2016-05-10 5 views
5
tweepy.error.TweepError: [{u'message': u'Invalid or expired token.', u'code': 89}] 

I token devono essere codificati? Ho il codice OAuth e token di accesso codificati in questo momento, ma il token sembra scadere ogni 24 ore. Cosa posso fare per rinnovare il token in modo programmatico? Posso ottenere un nuovo token tramite Tweepy?Token non valido o scaduto. Richiedi un nuovo token tramite Tweepy?

L'obiettivo del mio script è di passare la notte tutti i giorni senza la mia autorizzazione. L'ho impostato come cronjob. Non voglio fare alcuna immissione manuale.

Sto solo utilizzando l'API su 1 account, il mio account. Quindi ho il nome utente/password, ecc.

Normalmente, ottengo il token facendo clic su "Crea il mio token di accesso", quindi quando torno indietro qualche giorno dopo, il token è sparito e il pulsante per crearlo -Appare di nuovo.

enter image description here

Dopo rigenerante e di utilizzarlo per un altro giorno, è successo di nuovo! Screenshot: http://i.imgur.com/hhDqLnU.png

+0

Gli stati Twitter nelle loro FAQ OAuth non rilasciano token di autorizzazione. –

+0

@KlausD. Lo so, non è strano? Il token scompare dopo un giorno o due di utilizzo. Mi ha fatto questo 3 volte adesso. Non credo che stiano dicendo la verità. Come posso gestire questo errore comunque? Non capisco come la loro affermazione possa essere vera quando smette di funzionare casualmente? – User

+0

Come si acquisisce il token? –

risposta

2
Non

sicuro di ciò che l'obiettivo della vostra app è, ma per rispondere ad alcune delle vostre domande-preoccupazioni:

Do gettoni devono essere codificato duro?

No, A seconda della natura della app si esegue la codifica, è possibile richiedere questi dati al momento dell'esecuzione del programma tramite moduli elettronici, o campo di testo in una GUI o includere in un altro file e cifrare o importare il file è in e usarlo ...

ho l'OAuth e token di accesso difficile codificati in questo momento, ma il token sembra scadere ogni 24 ore. Cosa posso fare per rinnovare il token in modo programmatico?

Non è possibile utilizzare la chiave API e il segreto utente, questa operazione deve essere eseguita manualmente. Queste informazioni dovrebbero essere permanente, sulla base di https://dev.twitter.com/oauth/overview

Il token di accesso è un'altra storia, è possibile utilizzare l'API per richiedere uno a quanto pare: https://dev.twitter.com/oauth/reference/post/oauth/access_token

POST OAuth/request_token consente a un'applicazione del consumatore di ottenere un Token di richiesta OAuth per richiedere l'autorizzazione dell'utente. Questo metodo soddisfa la sezione 6.1 del flusso di autenticazione OAuth 1.0. È fortemente consigliato l'utilizzo di HTTPS per tutti i passaggi di autorizzazione OAuth. Uso Nota: solo i valori ASCII sono accettati per l'oauth_nonce

URL Resource https://api.twitter.com/oauth/request_token

Per quanto riguarda il token di accesso di scadenza:

Quanto dura un token di accesso durare? Al momento non scade l'accesso ai token . Il token di accesso non sarà valido se un utente rifiuta esplicitamente l'applicazione dalle sue impostazioni o se un amministratore di Twitter sospende l'applicazione .Se la tua domanda è sospesa ci sarà una nota sulla tua pagina di applicazione che dice che è stata sospesa. come per twitter:

Cosa faccio se un token di accesso che ho diventa non valido? Dovresti pianificare che il token di accesso di un utente possa diventare non valido in qualsiasi momento e che tu sia necessario ri-autorizzare per quell'utente nel caso in cui lo fa. Assicurati di gestire questa situazione con garbo è imperativo per un'esperienza utente di qualità .

Secondo la documentazione cinguetta https://dev.twitter.com/oauth/application-only

richiesta API contiene portatore non valida gettone Utilizzando un token portatore non corretta o revocato per effettuare richieste API si tradurrà in:

HTTP/1.1 401 non autorizzato Content-Type : application/json; charset = utf-8 Content-Length: 61 ...

{ "errori": [{ "messaggio": "non valido o scaduto di token", "codice": 89}]}

Forse questo ha bisogno di risolversi sul lato dei twitters? Vorrei suggerire contattandoli directyl https://dev.twitter.com/solutions/customer-service

+0

Quindi l'accesso all'API richiede l'input dell'utente ogni 24 ore? 'tramite webform, o textfield in una GUI'. Ho notato che hai detto qualcosa sulla crittografia e sull'importazione di un file, il che potrebbe significare che non ho bisogno di input da parte dell'utente? – User

+0

questo può essere coperto qui: http://stackoverflow.com/questions/7014953/i-need-to-securely-store-a-username-and-password-in-python-what-are-my-options forse tu può descrivere che tipo di app stai codificando per riferimento futuro. e No, l'accesso api non richiede l'input dell'utente ogni 24 ore. di nuovo, dipende da quali sono le tue esigenze – glls

+0

Inoltre, se puoi fornire esempi di codice di ciò che stai cercando di ottenere, e come stai ricevendo l'errore usando tweepy sarebbe utile – glls

0

È possibile ottenere il token di accesso utilizzando il codice qui sotto. Ho usato configparser per memorizzare la mia configurazione. Una volta ottenuto il token, non scade.

if not config['APP']['AUTH_SECRET'] or not config['APP']['AUTH_TOKEN']: 
    try: 
     redirect_url = auth.get_authorization_url() 
     print redirect_url 
    except tweepy.TweepError: 
     print 'Error! Failed to get request token.' 

    # Example w/o callback (desktop) 
    # You even can start browser here 
    verifier = raw_input('Go to URL above, authorize and enter the code:') 

    try: 
     auth.get_access_token(verifier) 
    except tweepy.TweepError: 
     print 'Error! Failed to get access token.' 

    config['APP']['AUTH_SECRET'] = auth.access_token_secret 
    config['APP']['AUTH_TOKEN'] = auth.access_token 
    with open(CONFIG_FILE,'w') as configfile: 
     config.write(configfile) 
else: 
    auth.set_access_token(config['APP']['AUTH_TOKEN'], config['APP']['AUTH_SECRET']) 
+0

Ciò richiede l'immissione manuale da parte dell'utente, ma questo è un cronjob eseguito a mezzanotte. – User

+0

L'immissione manuale richiede solo la prima volta – andjelx

Problemi correlati