Prima di tutto la mia domanda riguarda il funzionamento dell'autenticazione drive_v2 di google e la creazione di nuovi file, ecc. Con l'app per le mie rails 4.2. Ho l'app per rails con devise/omniauth2 e google funziona perfettamente. Ho attivato nella console di google dev sia l'autenticazione web che l'autorizzazione dell'API di Google. Entrambi i segreti dei clienti sono scaricati e funzionanti.autenticazione google/apis/drive_v2 sulla nuova autenticazione di google Drive. Spero anche di evitare la frustrazione con google-api-client
Detto questo. Ho bisogno della mia app per le rotaie in accesso offline per poter usare, creare ed eliminare goole Documenti e fogli di calcolo. Ho impostato lo scopo per .drive, impostare l'accesso offline ecc.
Ho scritto codice EVEN che funziona bene se vado nel parco giochi di google e ottenere un nuovo token di accesso da utilizzare.
Il mio primo problema è la capacità di ottenere il mio refresh_token e autenticare o ottenere uno nuovo utilizzando il google-api-client (versione 0.9pre3 così la gente non sono confuso)
Per poter utilizzare il nuovo Google api Avevo bisogno di commentare google drive dal momento che sembrava che tutte le API fossero combinate nel client.
gem 'omniauth-google-oauth2'
#gem 'google_drive'
gem 'google-api-client', '0.9.pre3'
Sono bloccato sulla fase di autenticazione/autorizzazione e mi sento piuttosto stupido a riguardo.
Quindi il codice di esempio sul repository github per l'API here o il sito dev di google here mi portano a credere che funzioni.
require 'google/apis/drive_v2'
Drive = Google::Apis::DriveV2 # Alias the module
drive = Drive::DriveService.new
drive.authorization = authorization # See Googleauth or Signet libraries
o
drive.authorization = Google::Auth.get_application_default([Drive::AUTH_DRIVE])
naturalmente ciò che è l'autorizzazione? Secondo i documenti, vado here.
L'esecuzione del codice di esempio riportato di seguito: richiedono 'googleauth'
Prendi l'ambiente di autorizzazione configurato
scopes = ['https://www.googleapis.com/auth/cloud-platform', 'https://www.googleapis.com/auth/compute']
authorization = Google::Auth.get_application_default(scopes)
porta a:
authorization = Google::Auth.get_application_default(scopes)
RuntimeError: Could not load the default credentials. Browse to
https://developers.google.com/accounts/docs/application-default-credentials
for more information
from /Users/prussiap/.gem/ruby/2.2.0/gems/googleauth-0.4.2/lib/googleauth.rb:116:in `get_application_default'
Probabilmente a causa della mia confusione o stupidità.
L'altro metodo visualizzato nei documenti del sito di google dev collegato in precedenza e gli account di servizio sembrano il modo di andare alias here.
Ma niente funziona. Ho visto un'infarinatura di questi client_secrets troppo
client_secrets = Google::APIClient::ClientSecrets.load
authorization = client_secrets.to_authorization
, naturalmente, che .load rompe su di essa la propria, come si aspetta un percorso di file o il nome del file, ma nulla di magico ho dato da mangiare ha funzionato
Ogni codice di esempio che mi permette sia uso per il mio client_secret per conto del servizio o OAuth2 (web app), ma senza alcun redirect fantasia sarebbe fantastico e davvero aiutare ..
Ora per gli altri nuovi per l'API di Google si prega di leggere qui di seguito.Mi sento stupido per non averlo visto o averlo notato ma forse questa informazione può aiutarti ragazzi quando ho sollevato lo issue sul repository github ero confuso ..
A quanto pare il client API di Google per ruby è totalmente diverso da < 0.9pre1 o maggiore di quello. Così è la documentazione.
Quindi, se state leggendo questo tipo di codice e state leggendo queste docs:
require 'google/api_client'
require 'google/api_client/client_secrets'
require 'google/api_client/auth/installed_app'
require 'google/api_client/auth/storage'
require 'google/api_client/auth/storages/file_store'
require 'fileutils'
APPLICATION_NAME = 'Drive API Quickstart'
CLIENT_SECRETS_PATH = 'client_secret.json'
CREDENTIALS_PATH = File.join(Dir.home, '.credentials',
"drive-quickstart.json")
SCOPE = 'https://www.googleapis.com/auth/drive.metadata.readonly
Poi si sta utilizzando < 0.9pre1 (sono abbastanza sicuro)
Altrimenti si vede il mio codice in alto con l'unità_v2, quindi rimuovi la tua gemma google_drive perché viene inserita in una API e legge il documento this.
Spero che questo aiuti gli altri.
E qualsiasi aiuto sul mio problema di autenticazione tra cui l'utilizzo di servizi vs API vs altro tipo di account con alcuni codice di esempio per l'autenticazione e quindi l'autenticazione con un token di aggiornamento. Sarebbe fantastico
eh, im non avere questo problema. Sto solo avendo il problema con l'utilizzo di omniauth-google-oauth2 e mi chiedo se non sono supposto come dovrei sostituire quella porzione di client secret.json (dal momento che l'id e il segreto del client sono salvati nel file omniauth.rb) e come procedere da lì . la mancanza di documentazione è ...Tipico, immagino, ma ho intenzione di pubblicare le istruzioni se riesco a far funzionare questa roba – dtc
Anche questo errore. Sembra che la domanda possa essere ridotta alla sola parte di autenticazione poiché il contesto dell'API dell'unità non è correlato al codice che causa l'errore. Sto cercando di accedere all'API di analisi personalmente ... –