2016-08-09 53 views
1

Ich versuche zu verwenden, Google Text & Tabellen mit Server-Schlüssel (erstellt in console.cloud.google.com) wie dieseWie in Google-Tabelle Api V4 mit Server Key

var service = new SheetsService(new BaseClientService.Initializer 
    { 
     ApplicationName = "myappname", 
     ApiKey = "mykey" 
    }); 

Aber nach dem ersten Anforderung authentifizieren i erhalte einen Fehler

Message[The request does not have valid authentication credentials.] 

So, wie man mit nur Bedienerschlüssel authentifizieren?

Kann es besser sein, die Anmeldeinformationen des Dienstkontos zu verwenden, um mit dem API vom Server zu arbeiten (wenn es natürlich möglich ist)?

Antwort

0

Versuchen Sie, diese code written by Владимир Рак:

 
var certificate = new X509Certificate2("pathTo***.p12", "notasecret", X509KeyStorageFlags.Exportable); 
     var serviceAccountEmail = "********-*********@developer.gserviceaccount.com"; 
     var userAccountEmail = "******@gmail.com"; 
     ServiceAccountCredential credential = new ServiceAccountCredential(
        new ServiceAccountCredential.Initializer(serviceAccountEmail) 
        { 
         Scopes = new[] { DriveService.Scope.Drive }, 
         User = userAccountEmail

}.FromCertificate(certificate)); // Create the service. var service = new DriveService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "*****", });

+0

Ja, das für Dienstkonto, und wahrscheinlich funktioniert es (zumindest in meinem Fall funktioniert es mit einem anderen Cloud-apis :)). Aber die Frage war Serverschlüssel – Qadmium

+0

Sie können nicht auf Google-Blätter mit einem Server-API-Schlüssel zugreifen. Google-Tabellen gelten als private Informationen. https://support.google.com/cloud/answer/6158857?hl=de –

+0

Sie können einen Server-API-Schlüssel verwenden, das angeforderte Blatt muss jedoch öffentlich sein. https://developers.google.com/sheets/guides/authorizing –