Gli account di servizio Google consentono di impersonare un account utente esistente (per alcuni servizi). Non l'ho provato su Google Drive, ma l'ho usato con l'API degli strumenti per i Webmaster. Le istruzioni possono essere trovate qui: https://developers.google.com/identity/protocols/OAuth2ServiceAccount
Per riassumerle, quando si creano le credenziali dell'account di servizio è possibile specificare il parametro "sub" con "L'indirizzo di posta elettronica dell'utente per il quale l'applicazione richiede l'accesso delegato". L'account per cui stai richiedendo l'accesso deve esistere e avere l'autorizzazione per accedere ai servizi che stai richiedendo.
nel link qui sotto Google fornisce esempi per Java, Python e HTTP/REST, ecco l'esempio di Python:
credentials = SignedJwtAssertionCredentials(client_email, private_key,
'https://www.googleapis.com/auth/sqlservice.admin',
sub='[email protected]')
sto usando la gemma rubino google-api-client (0.9.pre3) e il costruttore ServiceAccountCredentials non passare il parametro 'sub' alla sua classe genitore in modo che deve essere specificato in un altro passo:
client = Google::Auth::ServiceAccountCredentials.new(json_key_io: json_key_io, scope: scope)
client.update!(sub: '[email protected]')
client.fetch_access_token!
service = Google::Apis::WebmastersV3::WebmastersService.new
service.authorization = client
utilizzando questo codice posso autenticare usando il mio account di servizio e ho accesso ai siti
L'utilizzo dell'API è associato a un progetto in un account Google? Quindi c'è qualcosa in comune tra l'id e il progetto? –
Non puoi cambiarlo, l'indirizzo email dell'account di servizio viene creato da Google in cui sei bloccato. No, non puoi fornire il tuo, ma deve essere generato da Google. – DaImTo
@DaImTo Metti quel commento come risposta e ti mando un assegno! –