Кажется, вы пытаетесь получить свой токен, не запрашивая страницу входа.
Да, вы можете сделать это, используя client_credentials
предоставить аутентификацию потока в C#.Net
См. Следующий фрагмент кода:
Класс токена доступа:
public class AccessTokenClass
{
public string access_token { get; set; }
public string token_type { get; set; }
public long expires_in { get; set; }
}
Метод запроса токена:
private async Task<string> GetYourTokenWithClientCredentialsFlow()
{
string tokenUrl = $"https://login.microsoftonline.com/YourTenant/oauth2/token";
var tokenRequest = new HttpRequestMessage(HttpMethod.Post, tokenUrl);
tokenRequest.Content = new FormUrlEncodedContent(new Dictionary<string, string>
{
["grant_type"] = "client_credentials",
["client_id"] = "5f14dea0-5cd---Your_Client_Id----8950-4f646829f870",
["client_secret"] = "031Fnwih---Your_Client_Secret----Fx+Ase3V65lpWQ=",
["resource"] = "https://graph.microsoft.com" // https://management.azure.com/ Or Any Resource You Want
});
dynamic json;
dynamic token;
HttpClient client = new HttpClient();
var tokenResponse = await client.SendAsync(tokenRequest);
json = await tokenResponse.Content.ReadAsStringAsync();
token = JsonConvert.DeserializeObject<AccessTokenClass>(json);
Console.WriteLine("Your Access Token {0}",token.access_token);
return token;
}
Ответ сгенерированного токена:
Как только вы установите все необходимые учетные данные, вы получите токен в ответ. Смотрите снимок экрана ниже:
Примечание: Этот поток аутентификации будет генерировать для вас токен без интерактивного экрана входа в систему. Если у вас есть какие-либо вопросы, не стесняйтесь поделиться в комментариях. Спасибо и счастливого кодирования!
Обновление:
Назначить выделенное разрешение на чтение почты. Выполните следующие шаги:
- Azure active directory
- Регистрация приложения
- Выберите приложение
- API-разрешения
- Добавить разрешение
- График Microsoft
- Делегированные разрешения
- Mail
- Mail.Read (читать почту пользователя)
- Добавить разрешение
- Предоставить согласие администратора
См. Снимок экрана: