2013-07-14 20 views
22

Quali sono i possibili motivi che possono causare la scadenza del token (oltre che l'annullamento dell'autorizzazione dell'applicazione)?API di Twitter - Motivi per "token non valido o scaduto"

Il mio problema è che ho un app con diverse migliaia di utenti, tutte le comunicazioni API funziona perfettamente, ma per alcuni utenti sto ottenendo l'errore invalid or expired token, la mia iniziale, però, era che essi sono gli utenti che hanno annullato l'autenticazione per l'applicazione, ma Ho contattato alcuni di loro e non hanno revocato l'accesso.

Qualche idea su quali altri problemi possono causare quell'errore?

+1

Recentemente, Twitter ha cambiato la sua api. Ora 180 messaggi possono essere pubblicati all'ora da API esterna. Se l'utente supera il limite, Twitter non sarà autenticato da altri utenti. Si prega di verificare la domanda, se supera il limite. –

+2

grazie @krishnasahoo Sono a conoscenza delle modifiche apportate nella versione 1.1 dell'API in termini di limiti di velocità. ma quando si supera il limite di velocità si ottiene un errore di "limite di velocità" e non l'errore che ho descritto sopra – Ran

+0

grazie per la risposta elaborata, ho già familiarità con quello che hai menzionato sopra e non penso che sia il problema dal se non stavo rispettando uno di questi problemi, nessuna delle chiamate API sarebbe passata e, come ho detto, capita solo a una piccola parte dei miei utenti. attualmente la mia ipotesi è che capita agli utenti che stanno cambiando il loro nome utente di Twitter, forse quando l'utente viene automaticamente decautentato da tutte le app. – Ran

risposta

0

Potrebbe essere utile per voi. Ho affrontato lo stesso problema.

Si prega di trovare il pezzo di sotto del frammento di codice

$code = $tmhOAuth->user_request(array(
     'method' => 'POST', 
    'url' => $tmhOAuth->url('oauth/access_token', ''), 
    'params' => array(
      'oauth_verifier' => trim($params['oauth_verifier']), 
     ) 
    )); 

    if ($code == 200) { 
     $oauth_creds = $tmhOAuth->extract_params($tmhOAuth->response['response']); 
     // echo '<pre>';print_r($oauth_creds);exit; 


     $tmhOAuth->reconfigure(array_merge($tmhOAuth->config, array(
     'token' => $oauth_creds['oauth_token'], 
      'secret' => $oauth_creds['oauth_token_secret'], 
    ))); 

    $code = $tmhOAuth->user_request(array(
      'url' => $tmhOAuth->url('1.1/account/verify_credentials') 
    )); 


} 
+1

Questo errore si verifica quando il token in uso è scaduto o non è valido. Verifica che le stringhe utilizzate per accedere al token e ad accedere ai token secret siano valide. Potresti aver inavvertitamente scaduto i token e aver bisogno di rigenerarli. – Amit

+0

per fare ciò che ho descritto ho bisogno di inviare nuovamente l'utente a twitter e re-autenticare, questo è qualcosa che vorrei evitare ... – Ran

0

Avete confermato che i gettoni hanno lavorato in una sola volta? In un sistema OAuth su cui ho lavorato, si è verificato un errore nel modo in cui i token sono stati archiviati e recuperati in modo sicuro, causando il danneggiamento di una piccola percentuale di essi. Se puoi confermare che i token hanno funzionato in passato, questo è un buon primo passo.

Quando si recuperano i token dallo spazio di archiviazione, sono rimasti invariati? È possibile che si corrompano nel modo in cui li gestisci?

Mettere un po 'di registrazione per tenere traccia di quando i token funzionano e falliscono. Un token inizia a funzionare di nuovo dopo che ha fallito una volta? Se non si utilizza un token per 30 giorni, scade? Con un log dettagliato, puoi iniziare a identificare i token scaduti e cercare i pattern in uso per indicare cosa potrebbe farli scadere.

Assicurati di esplorare anche altre possibilità. In che modo gli utenti revocano i token su Twitter? È facile farlo accidentalmente? Per gli utenti con token non riusciti, hanno anche altre app autorizzate che hanno smesso di funzionare?

0

Prima di tutto una bella domanda Ran.

Voglio chiederti che hai seguito gli sviluppatori di Twitter ??

A volte diventa ambiguo quel token da utilizzare poiché Twitter fornisce due coppie di token e la libreria. Una di esse è una chiave segreta.

È necessario selezionare quei token che iniziano con il proprio ID Twitter seguito da un trattino.

Ora la tua domanda è che questo errore si verifica con alcuni dei tuoi utenti. Quindi ecco la risposta che un'app stessa trova ambiguo per scegliere il token.

Anche se forse non ho completamente ragione, ma ti consiglio di provare questa soluzione almeno una volta.

1

Potrebbe essere possibile che questi utenti abbiano l'accesso revocato non. Ma nella mia esperienza un token di accesso può anche scadere dopo che l'utente (nei test case: me) ha cambiato la sua password.

Quando l'utente esegue questa operazione, non è più possibile utilizzare l'API REST dell'API del flusso sull'ambito di tale utente. Si prega di adattare la domanda per gestire quella situazione. Revoca la sessione dell'utente, così quando torna alla tua applicazione, lui/lei può essere reindirizzato nuovamente a Twitter per avviare un nuovo processo token di accesso OAuth. O mandagli una e-mail per chiedere gentilmente di riconnettersi. Vimeo/Windows/...alcune delle persone che gestiscono token scaduti con e-mail.

Buon divertimento!

15

Verificare l'integrità di un token di accesso in qualsiasi momento chiamando lo GET account/verify_credentials mentre si utilizza quel token di accesso.

sua menzionati e dalla ricerca sono venuto a sapere che:

tuo token di accesso non sarà valida se un utente rifiuta esplicitamente l'applicazione dalle loro impostazioni o se un amministratore Twitter sospende l'applicazione . Se la tua domanda è sospesa ci sarà una nota su nella tua pagina di applicazione che dice che è stata sospesa.

Perché il token di accesso di twitter oauth non è valido/scaduto?

Controllare questo post: invalid/expired access tokens.

C'è un posto in gruppi di Google che dice:

Non si ottiene una seconda possibilità, e questo è di progettazione. Le richieste OAuth hanno una firma univoca; una volta inviata una richiesta specifica, non è possibile inviare nuovamente . Se inseriscono correttamente il pin, tutto va bene, si ottiene un token di accesso. Se inseriscono il pin sbagliato, si ottiene 401 Non Autorizzato - che è previsto. Ma se poi tentano nuovamente di inserire il pin, anche il pin corretto viene visualizzato come non autorizzato.

Controllare questo link per il riferimento di cui sopra.

Alcuni suggerimenti da Twitter dipendente per lo stesso problema:

Credo che ci sono due cose che vorrei suggerire a questo punto: 1.) Vai impostazioni dell'applicazione e utilizzare la scheda "Reset chiavi" per reimpostare la chiave utente e il segreto , quindi aggiornare tali valori nell'app e verificare che continui a vedere lo stesso comportamento. 2.) Prova a passare oauth_callback nella tua richiesta request_token. Onestamente non penso che questo farà la differenza, ma voglio provare e ad essere rigoroso come posso qui.

controllare anche questo discussion dicendo:

È necessario utilizzare l'oauth_token e oauth_token_secret tornato da l'OAuth/access_token chiamare al posto di quello nelle impostazioni del tuo app in dev.twitter.com

+0

grazie per la risposta elaborata, ho già familiarità con quello che hai citato sopra e non penso che sia il problema dal momento che se non stavo rispettando uno di questi problemi, nessuna delle chiamate API sarebbe passata e come ho detto succede solo a una piccola porzione dei miei utenti. attualmente la mia ipotesi è che capita agli utenti che stanno cambiando il loro nome utente di Twitter, forse quando l'utente viene automaticamente decautentato da tutte le app. – Ran

+0

Si prega di confermare se l'utente ha cambiato lì account informazioni primarie. Se c'è qualcosa di cui l'app di Twitter non può fidarsi, rifiuterà i token. Si prega di leggere le FAQ API twitter https://dev.twitter.com/docs/faq. Per la risoluzione dei problemi dovresti leggere Risoluzione dei problemi OAuth 1.0A - Link - https://dev.twitter.com/discussions/204 –

+0

Beh, ho usato user.accessToken/Secret .. e funzionava benissimo, adesso sta tornando indefinito, ma l'App AccessToken/Secret funziona ancora senza problemi. – Hamza

3

In aggiunta ai commenti che tutti hanno fatto, a volte l'API di twitter restituirà un errore "token non valido" quando il token non è il problema. L'ho notato di più quando ho creato una stringa di richiesta che non analizza correttamente. Ad esempio, una volta ricevevo quell'errore mentre stavo passando in screen_name con simboli che non erano codificabili con URI.Ho anche ottenuto quando sono passato in valori vuoti come questo (in cui il cursore è vuota):

https://api.twitter.com/1/followers.json?cursor=&screen_name=whatevah 

potrebbe darci le specifiche delle chiamate che stanno tornando questo errore?

0

My God's answer è corretto, ma voglio condividere my answer from another question spiegando come potrebbe essere l'orologio del computer:

Se il flusso di OAuth stava lavorando un giorno e in mancanza di quello successivo, controlla orologio del computer. Stavo eseguendo una scatola di Vagrant che in qualche modo aveva il suo tempo impostato il giorno prima, che ha causato all'API di Twitter di restituire {"codice": 89, "messaggio": "Token non valido o scaduto."}. Questo può anche apparire come data/ora fuori limite 401. È possibile utilizzare questo comando per aggiornare il vostro orologio in Ubuntu:

sudo ntpdate time.nist.gov 

Alternative method se ntpdate non è disponibile sul sistema:

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z" 
2

mi è stato sempre lo stesso errore poi ho cambiato (access_token) to (access_token_key) e ha funzionato per me.

Spero che possa aiutare qualcuno.

0

se il token di accesso = 738629462149844993-FcWHjfcucCLGEosyGGQ38qI ****** iC non dimenticare di indicare trattino (-) seguito dal tuo USERID.

Problemi correlati