Ошибка запроса токена доступа Azure AD OAuth2 - неверный запрос 400

Мое настольное приложение WPF (C #) пытается прочитать электронные письма пользователя Outlook через API Microsoft Graph. Я застрял в процессе аутентификации; Я уже получил код аутентификации, и теперь я пытаюсь получить токен доступа от Azure, но продолжаю получать код ошибки HTTP 400 при отправке запроса натокен доступа:

/**** 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
}

Выше приведен код, используемый для получения кода авторизации, за которым следует попытка получить токен доступа. У нас нет client_secret, потому что секреты предназначены только для веб-приложений, а это родное приложение WPF для настольных компьютеров. Я читал, что это не проблема, хотя. Я следил за многими учебниками и официальными документами онлайн, в основномОфициальный график авторизации документа и я до сих пор не могу понять, что я делаю неправильно. Любая помощь будет принята с благодарностью, спасибо.