UPDATE: Das herausgefunden. Ich musste den Berechtigungsheader wie unten beantwortet hinzufügen, aber ich glaube auch, dass das Zugriffstoken (das ich über Postman verifizierte) mehr Bereiche benötigte, um mich vollständig zu authentifizieren, was sinnvoll ist, da diese API Umfragen enthält auf die ich zugreifen möchte, die auch mit einem Google-Konto verknüpft sind. Nachdem ich die zusätzlichen Bereiche, die für den Zugriff auf die Umfragen erforderlich waren, zu der Token-Anfrage zusammen mit dem Autorisierungs-Header-Code hinzugefügt hatte, konnte ich mich erfolgreich verbinden.GET Anruf an eine Google API antwortet mit "Nicht autorisiert"
Weitere Informationen über Bereiche zu C# Code hinzufügen kann hier gefunden werden: http://www.oauthforaspnet.com/providers/google/
hoffe, das hilft jemand in ähnliche Probleme läuft. Danke allen!
Ich versuche, einen GET-Aufruf an eine Google API zu senden, aber es reagiert weiterhin mit "Unauthorized", während ich bei Google Mail angemeldet bin. Ich habe die Google+ Anmeldung bereits in StartUp.Auth.cs implementiert und das Zugriffstoken sogar zur späteren Verwendung gespeichert.
Also wie bekomme ich den HttpClient, um mich zu autorisieren?
Ich habe ein Zugriffs-Token verfügbar, aber ich weiß nicht, wie es richtig übergeben wird. Ich habe Beispiele mit Benutzernamen und Passwörtern gesehen, aber ich sollte diese Parameter nicht weitergeben müssen, wenn ich bereits ein Zugriffs-Token habe? Wenn überhaupt, sollte ich in der Lage sein, den Benutzer auf eine Anmeldeseite umleiten zu lassen, wenn dies erforderlich ist, wenn ich mich abmelde, bevor ich die Lösung ausführe.
Was ich erwarte, wenn das Projekt ausgeführt wird, ist das Ergebnis des GET-Aufrufs, in Form von json zurück zu kommen, aber es sagt immer, ich bin "Unauthorized" und mir fehlt wahrscheinlich irgendwo eine Codezeile.
..Hier ist der Code ich verwende:
using (HttpClient client = new HttpClient())
{
string _url = "https://www.googleapis.com/consumersurveys/v2/surveys?key={MY_API_KEY}";
client.BaseAddress = new Uri(_url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
using (HttpResponseMessage response = client.GetAsync(_url).Result)
{
if (response.IsSuccessStatusCode)
{
using (HttpContent content = response.Content)
{
var Content = content.ReadAsStringAsync();
ViewBag.GoogleResponse = Content.ToString();
}
}
else
{
// THIS IS ALWAYS UNAUTHORIZED!
ViewBag.GoogleResponse = response.StatusCode + " - " + response.ReasonPhrase;
}
}
}
Bitte mit Ideen oder Vorschläge helfen. Vielen Dank!
Versuchen Sie: 'client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue (" Bearer "," xxx ");' wobei xxx Ihr Token ist –
Wenn Sie ein Token gemäß https://developers.google.com/identity erhalten/protocols/OAuth2 dann hätte ich gesagt, das sollte funktionieren. Erweitert sich der Bereich, für den das Token autorisiert ist, auf die Operation, die Sie ausführen möchten? Ist ViewBag.GoogleAccessToken definitiv ausgefüllt? –
Ja, ich habe das Token getestet, das auf der Seite Rendern ausgedruckt wird, und es wird gesetzt, bevor der GET-Aufruf erfolgt. Sie haben die gleiche Antwort wie jemand anders, also werde ich versuchen, ein bisschen mehr damit zu tun und berichten, was passiert. Vielen Dank! – ForeverLearningAndCoding