Azure AD OAuth2-Zugriffstoken-Anforderungsfehler - 400 ungültige Anforderung
ie @My WPF-Desktopanwendung (C #) versucht, die Outlook-E-Mails des Benutzers über die Microsoft Graph-API zu lesen. Ich stecke im Authentifizierungsprozess fest. Ich habe bereits einen Authentifizierungscode erhalten und versuche nun, ein Zugriffstoken von Azure zu erhalten, erhalte jedoch weiterhin einen HTTP 400-Fehlercode, wenn die Anforderung für das @ gesendet wirZugangstoke:
/**** Auth Code Retrieval ****/
string authCodeUrl = "https://login.microsoftonline.com/common/oauth2/authorize";
authCodeUrl += "?client_id" = clientId;
authCodeUrl += "&redirect_uri=" + redirectUri;
authCodeUrl += "&response_type=code";
authCodeUrl += "&resource=https%3A%2F%2Fgraph.microsoft.com%2F";
Process.start(authUrl); // User logs in, we get the auth code after login
string code = "......"; // Hidden for this post
/**** Access Token Retrieval ****/
string tokenUrl = "https://login.microsoftonline.com/common/oauth2/token"
string content = "grant_type=authorization_code";
content += "&client_id=" + clientId;
content += "&resource=https%3A%2F%2Fgraph.microsoft.com%2F";
content += "&code=" + code;
content += "&redirect_uri=" + redirectUri;
WebRequest request = WebRequest.Create(tokenUrl);
request.ContentType = "application/x-www-form-urlencoded";
byte[] data = Encoding.UTF8.GetBytes(content);
request.ContentLength = data.Length;
request.Method = "POST";
try
{
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
WebResponse response = request.GetResponse(); // This throws exception
}
catch (Exception error) // This catches the exception
{
Console.WriteLine(error.Message); // Outputs 400, bad request
}
Der obige Code wird zum Abrufen des Authentifizierungscodes verwendet, gefolgt vom Versuch, das Zugriffstoken abzurufen. Wir haben kein client_secret, da Geheimnisse nur für Webanwendungen gelten und dies eine native Desktop-WPF-Anwendung ist. Ich habe gelesen, dass dies kein Problem ist. Ich habe viele Tutorials und offizielle Dokumente online verfolgt, hauptsächlichdie offizielle Graph-Autorisierung doc und ich kann immer noch nicht herausfinden, was ich falsch mache. Jede Hilfe wäre sehr dankbar, danke.