Я попытаюсь прояснить ситуацию немного.
В вашем случае ваш клиент - консольное приложение, а это значит, что вам нужен тип предоставления client credentials
.Согласно документации :
Это самый простой тип предоставления и используется для обмена данными между серверами - токены всегда запрашиваются от имени клиента, а не пользователя.
Итак, вы получаете access token
от имени самого клиента (вашего консольного приложения).И:
Клиент, как правило, должен проходить аутентификацию на конечной точке токена, используя его идентификатор клиента и секрет.
И если вы подумаете об этом, это действительно имеет смысл -самого ID клиента недостаточно (как упомянуто в комментариях - вы не можете войти на сайт только с именем пользователя, вам также нужен пароль).
Теперь при использовании некоторых типов грантов этотребовать учетные данные пользователя ( неявный , Hybrid ), тогда вам не нужно указывать client secret
(при выполнении запроса), но это потому, что пользователь вводит свое имя пользователя и пароль.
В этом случае вы получаете access token
от имени вошедшего в систему пользователя .
PS: Как и FYI - в вашем консольном приложении вытакже может получать access token
от имени пользователя, но вам нужно переключить подход с client credentials
тип предоставления на пароль владельца ресурса , и при выполнении запроса к конечной точке токена вам необходимоуказать имя пользователя и пароль.