Sto lavorando su script per ottenere contatti Google utilizzando google contacts api gem. Sono in grado di accedere il token con successo utilizzando questo codice:get token, memorizzarlo, aggiornarlo se scaduto utilizzando oauth2 gem in ruby
require 'rubygems'
require 'launchy'
require 'oauth2'
require 'googlecontacts'
require 'google_contacts_api'
# Get your credentials from the console
CLIENT_ID = 'your Id'
CLIENT_SECRET = 'your Secret'
OAUTH_SCOPE = 'https://www.google.com/m8/feeds'
REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob'
client = OAuth2::Client.new(CLIENT_ID, CLIENT_SECRET,site: 'https://accounts.google.com',token_url: '/o/oauth2/token', authorize_url: '/o/oauth2/auth')
url = client.auth_code.authorize_url(scope: OAUTH_SCOPE, redirect_uri: REDIRECT_URI)
Launchy.open(url)
$stdout.write "Enter authorization code: "
code = gets.chomp
token = client.auth_code.get_token(code, :redirect_uri => REDIRECT_URI)
PROBLEMA:
So che questo non è il modo migliore per farlo, perché è faticoso. ogni volta che eseguo lo script l'utente ha fornito le istruzioni di accesso. E anche io devo copiare manualmente incollare il token dal browser al terminale.
DOMANDA:
Come può essere in grado di memorizzare il token recuperate, e quando scaduto come posso aggiornarlo?
ciò che non sto capendo è: "cosa posso aggiungere nel codice sopra in modo da restituire un hash con il token di accesso e anche il token di aggiornamento?". questo è il problema. Voglio dire qualcosa di simile: { "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "portatore", "refresh_token": "1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" } – ben
Quando si esegue il metodo 'client.auth_code.get_token', la risposta sarà un oggetto' AccessToken'. E come puoi vedere nel [codice sorgente] (https://github.com/intridea/oauth2/blob/master/lib/oauth2/access_token.rb), questa classe ha tutte le informazioni che vuoi, come 'token' , 'refresh_token', expire info e un metodo per aggiornare l'auth. –
Ho avuto modo. Grazie Rael ed Eric per la tua risposta. Ora sono in grado di accedere al token di aggiornamento. Troverò un modo per usarlo per lo scambio di un nuovo token una volta scaduto. – ben