ich auf Skript arbeitete Google-Kontakte erhalten google contacts api gem verwenden. Ich kann den Token zuzugreifen erfolgreich mit diesem Code:-Token, speichern Sie es, es aktualisieren, wenn abgelaufen mit oauth2 Juwel 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)
PROBLEM:
Ich weiß, dass dies nicht der beste Weg ist, es zu tun, weil es anstrengend ist. Jedes Mal, wenn ich das Skript ausführe, hat der Benutzer Zugriffsanweisungen gegeben. Und ich muss auch manuell kopieren das Token vom Browser zum Terminal kopieren.
FRAGE:
Wie kann in der Lage sein, die abgerufene Token zu speichern, und wenn es abgelaufen, wie kann ich es aktualisieren?
Was ich nicht verstehe, ist: "Was kann ich in den obigen Code hinzufügen, um einen Hash mit dem Zugriffstoken und dem Aktualisierungstoken zurückzugeben?". das ist das Problem. Ich meine, so etwas wie diese: { "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "refresh_token": "1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" } – ben
Wenn Wenn Sie die Methode client.auth_code.get_token ausführen, wird die Antwort ein AccessToken-Objekt sein. Und wie Sie im [Quellcode] (https://github.com/intridea/oauth2/blob/master/lib/oauth2/access_token.rb) sehen können, hat diese Klasse alle gewünschten Informationen, wie 'token' , 'refresh_token', Ablaufinformationen und eine Methode zum Aktualisieren der Auth. –
Ich habe einen Weg. Danke Rael & Eric für deine Antwort. Ich kann jetzt auf das Aktualisierungstoken zugreifen. Ich werde einen Weg finden, um es für den Austausch eines neuen Tokens zu verwenden, sobald es abläuft. – ben