Нужно сделать авторизацию в Google для десктопного предложения без лишних телодвижений для пользователя — например, показать пользователю в браузере гугловскую страницу выбора аккаунта и запрос разрешения на нужные права. Без необходимость вручную лезть в консоль API и что-то там настраивать, как это предлагают попадавшиеся мне мануалы.
Это можно сделать?
Здравствуйте, Codealot, Вы писали:
C>Здравствуйте, Doom100500, Вы писали:
D>>Так это же OAuth2.
D>>Ты, как разработчик апликации, регистрируешь эё на гугле — поличаешь ClientID и ClientSecret
C>И это надо сделать только один раз мне самому?
Если коротко, то да.
А вообще тема очень обширная, и придётся
почитать
Побуду телепатом.
Скорее всего ты захотел использовать грант Client Credentials. Он очень прост для пониманиям, потому что для получения токена нужны только ClientID и ClientSecret. Но он используется только ботов, которые могут выполнять действия от лица пользователя, который этот бот зарегистрировал (другими словами идентивикация пользователя произвелось на стадии регистрации бота).
Елси аплицация должна иденцифицировать пользователя сама, то для этого используется гран Authorization Code. Тогда апликациям используя ClientID и ClientSecret, выданный при регистрации апликации разработчиком, перенаправляется на OAuth сервер (в данном случае гугл) для авторизации, где конечный пользователь подтверждает свою личность любым поддерживаимым сервером методом, т.е. именно открывается браузер со страницой логина в гугл. После этого апликация получает acess token.
По грантам в статье выше:
Authorization Code — используется, если апликация может держать в секрете ClientSecret (desktop или server application, хотя по поводу desktop немного сомневаюсь, т.к его можно разреверсить)
PKCE — то же самое, что и Authorization Code, но не требует ClientSecret (в статье описано как это получается). Используется когда апликация не может спрятать ClientSecret (например апликация, выполняющаяся в браузере — SPA)
Client Credentials — для ботов
Device Code — для IOT
Refresh Token — для обновления ранее полученного acess token, т.к. access token сильно временный. (требует хранить в апликации сам refresh token), если не хранить refresh token, то придётся опять запрашивать Authorization Code flow для аутенфикации.
Implicit Flow — не углублялся, но это что-то вроде упрощённого Authorization Code
Password Grant — токен выдаётся по username/password, переданного апликацией.
Последние два помечены как legacy, потому что пребуют, чтобы апликация у себя хранила username/password, в отличие от Authorization Code, когда юзер аутенфицируется на самом сервере.
В принципе, для desktop апликации вполне мог бы подойти и Password Grant, но раз он легаси, то может отвальться в любой момент.
Таким образом тебе нужно освоить Authorization Code (в режиме особой паранойи PKCE) и Refresh Token (что тут делать с паранойей — не знаю)