Wie wird die oauth-2-Verbindung zu Google-Speicher in .NET mithilfe eines Google Cloud Platform-Dienstkontos und einer Schlüsseldatei hergestellt? Die verfügbaren Beispiele und die Dokumentation behandeln keine Dienstkonten und die APIs sind verwirrend und scheinen sich häufig zu ändern, wodurch die vorhandene Dokumentation in Frage gestellt wird. Ein funktionierendes Codebeispiel wäre am besten, einschließlich der signifikanten API-Namespaces und -Versionen.Google-Speicherung in .NET mit einem Google Cloud Platform-Dienstkonto und Schlüsseldatei
Antwort
Das Codebeispiel in Cloud Storage JSON API documentation umfasst nur die Verwendung von Anmeldeinformationen für die Standardanwendung, nachdem GOOGLE_APPLICATION_CREDENTIALS auf den heruntergeladenen JSON-Schlüssel festgelegt wurde.
Allerdings gibt es eine Probe in den documentation for the Google API Client Library for .NET für ein Dienstkonto mit einem exportierten P12 Schlüsseln, mit dem Sie den CreateStorageClient() -Methode in der Cloud Storage docs gegeben anzupassen:
public StorageService CreateStorageClient()
{
String serviceAccountEmail = "SERVICE_ACCOUNT_EMAIL_HERE";
var certificate = new X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { StorageService.Scope.DevstorageFullControl }
}.FromCertificate(certificate));
var serviceInitializer = new BaseClientService.Initializer()
{
ApplicationName = "Storage Sample",
HttpClientInitializer = credential
};
return new StorageService(serviceInitializer);
}
den gleichen Verfahren zur Herstellung eines JSON Schlüssel direkt auf der Grundlage des API docs mit:
public StorageService CreateStorageClient()
{
GoogleCredential credential;
using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(StorageService.Scope.DevstorageFullControl);
}
var serviceInitializer = new BaseClientService.Initializer()
{
ApplicationName = "Storage Sample",
HttpClientInitializer = credential
};
return new StorageService(serviceInitializer);
}
Beachten sie, dass ich nicht getestet dies da ich nicht zur Zeit eine .NET-Entwickler-Umgebung eingerichtet haben, aber es sollte eine allgemeine Vorstellung von dem, wie es funktioniert. Ich werde ein Update für die Cloud Storage-Dokumente anfordern, um ein Beispiel hinzuzufügen, das einen JSON-Schlüssel verwendet.
Da wir eine Problemumgehung für unser zugrunde liegendes Problem entwickelt haben, kann es einige Zeit dauern, bis ich diese Lösung überprüfen kann. –
- 1. Appengine mit Google Cloud Endpoints und Guice
- 2. PhP mit GAE und Google Cloud SQL
- 3. Google Cloud Endpoint mit Angular2
- 4. Python und Google Cloud-Speicher
- 5. ImageMagick in Google Cloud
- 6. Google Cloud Speech mit Javascript
- 7. Druckereinstellungen mit Google Cloud Print
- 8. "Sessions" mit Google Cloud Endpoints
- 9. Google Cloud Platform mit Firebase
- 10. Mit Google Cloud Trace-API
- 11. Google Cloud Messaging mit Android
- 12. Google Cloud DNS mit mailgun
- 13. Google Cloud Platform - Datenverteilung
- 14. Teilen Sie Google Cloud Snapshot mit einem anderen Benutzer
- 15. Google Cloud Messaging - Beispielserver
- 16. WinSCP zu Google Cloud
- 17. DNS und Google Cloud Platform Load Balancer
- 18. 7-Segment-OCR mit Google Cloud Vision
- 19. Google Cloud Bigtable Sicherung und Wiederherstellung
- 20. Google Cloud Storage-Authentifizierung
- 21. Google Cloud Storage-Upload mit generischer signierter URL und Curl
- 22. Google Cloud Storage-Weitergabe
- 23. Google Cloud Storage und temporär bereitgestellte URLs
- 24. Wie rufe ich das Google Vision-API mit einem in Google Cloud Storage gespeicherten Bild auf?
- 25. Google Cloud Messaging mit Xcode 7 und iOS 9
- 26. Load Balancing mit Solr auf Google Cloud
- 27. Google Cloud Messaging (fake_message_id)
- 28. Vergleichen von Blobstore und Google Cloud Storage
- 29. Erstellen und Löschen von Buckets programmgesteuert in Google Cloud Storage
- 30. Google Cloud Endpoints EOFException
haben Sie DotNetOpenAuth /? https://github.com/DotNetOpenAuth/DotNetOpenAuth/wiki/Security-scenarios – weismat
@weismat Ich werde es mir ansehen. Momentan löse ich meine Kernaufgabe anders. Google hat keinen Anreiz, die .NET-Entwicklung zu vereinfachen. –