Mi sto picchiando maledettamente cercando di ottenere un semplice accesso all'accesso del servizio per lavorare in C#, a Google API e Google Analytics. La mia azienda sta già acquisendo dati in Analytics e posso interrogare le informazioni con il loro Query Explorer, ma iniziare a .Net non sta andando da nessuna parte. Sto utilizzando un file JSON generato da Google con PKI, in quanto la documentazione dice che tale account di servizio è il modo corretto per le comunicazioni da computer a computer con API Googla. Pezzo di codice presentato:Come accedere all'API di Google con account di servizio in C# - Credenziali non valide
public static GoogleCredential _cred;
public static string _exePath;
static void Main(string[] args) {
_exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase).Replace(@"file:\", "");
var t = Task.Run(() => Run());
t.Wait();
}
private static async Task Run() {
try {
// Get active credential
using (var stream = new FileStream(_exePath + "\\Default-GASvcAcct-508d097b0bff.json", FileMode.Open, FileAccess.Read)) {
_cred = GoogleCredential.FromStream(stream);
}
if (_cred.IsCreateScopedRequired) {
_cred.CreateScoped(new string[] { AnalyticsService.Scope.Analytics });
}
// Create the service
AnalyticsService service = new AnalyticsService(
new BaseClientService.Initializer() {
HttpClientInitializer = _cred,
});
var act1 = service.Management.Accounts.List().Execute(); // blows-up here
Tutto compila bene, ma quando ha colpito l'istruzione Execute(), viene generato un errore di GoogleApiException
:
[credenziali non valide] Località [Autorizzazione - intestazione] Motivo [authError ] dominio [global]
che cosa mi manca?
Sembra che qualcuno abbia usato il tuo codice e lo abbia usato sul suo blog. perchè hai risposto a questo nel 2016 e il suo blog è recente. La mia domanda è posso ottenere un token di accesso usando questo..so posso usare il token di accesso per l'API embed. perchè sto ricevendo un token di accesso nullo. – CyberNinja
Ero troppo pigro per usare il tuo generatore di classi. Così invece ho fatto questo: 'Newtonsoft.Json.Linq.JObject cr = (Newtonsoft.Json.Linq.JObject) JsonConvert.DeserializeObject (json); string s = (string) cr.GetValue ("private_key"); 'Grazie per la tua risposta-- ha aiutato molto. – robertpb