трехсторонний OAuth:
В настоящее время вы используете трехсторонний процесс OAuth, в котором участвуют три стороны: (# 1) конечный пользователь, (# 2) приложение и (# 3 ) сервер авторизации. В этом потоке OAuth пользователи должны дать явное согласие приложению через браузер через экран согласия .
Двухсторонний OAuth:
Поскольку вы хотите избежать что вам следует использовать учетную запись службы для доступа к этому приложению, чтобы пользователи не участвовали напрямую и согласие пользователя не требовалось . Этот рабочий процесс обычно называется двухсторонним OAuth (задействованы только приложение и сервер авторизации). См. Использование OAuth 2.0 для серверных приложений для более подробного объяснения.
Поскольку вы не хотите, чтобы учетная запись службы запускала приложение сама по себе, а действовала от имени других учетных записей в домене, вы должны предоставить ему полномочия на уровне домена, чтобы он мог олицетворять другие учетные записи в домене .
Рабочий процесс:
Для этого, вам необходимо выполнить следующие действия:
- Создайте учетную запись службы, следуя этому руководству .
- Делегировать полномочия на уровне домена учетной записи службы (необходимо быть администратором домена для этого): этот шаг разрешает учетной записи службы доступ к данным от имени любого пользователя в домене. Выполните шаги, указанные здесь .
- После делегирования полномочий на уровне домена вам необходимо изменить код, связанный с созданием учетных данных OAuth. Используйте, например, образец кода, приведенный в этот ответ :
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("service-account@email-address") // Service account email
.setServiceAccountPrivateKeyFromP12File(new File("your-credentials.p12"))
.setServiceAccountScopes(Collections.singleton(ClassroomScopes.CLASSROOM_COURSES))
.setServiceAccountUser("user@email-address") // Your email address (address of the user you want to impersonate)
.build();
В этом случае user@email-address
относится к учетной записи, от имени которой курс должен быть создан. Другими словами, это будет учетная запись, которую учетная запись службы должна олицетворять. Что касается файла P12
, его следует загрузить из Cloud Console, как описано здесь . Это можно сделать с помощью файла JSON
вместо P12
(см. здесь ).
Ссылка: