Ошибка олицетворения пользователя с использованием учетной записи службы Google (клиент JAVA)

Когда я пытаюсь выдать себя за пользователя в домене Google Apps для аутентификации API Google Диска с помощью setServiceAccountUser(), я получаю ответ как

com.google.api.client.auth.oauth2.TokenResponseException: 403 OK { "error" : "access_denied", "error_description" : "Запрошенный клиент не авторизован." }

Ниже мой код:

GoogleCredential credential = new GoogleCredential.Builder()
                            .setTransport(httpTransport)
                            .setJsonFactory(jsonFactory)
                            .setServiceAccountId(SERVICE_ACCOUNT_ID)
                            .setServiceAccountUser("[email protected]")
                            .setServiceAccountScopes(scope)
                            .setServiceAccountPrivateKey(privateKey)
                            .build(); 
Drive service = new Drive.Builder(httpTransport, jsonFactory,null).setHttpRequestInitializer(credential).setApplicationName(AppName).build();
File body = new File();
body.setTitle("Export");
body.setMimeType("application/vnd.google-apps.spreadsheet");
service.files().insert(body).execute();

Заранее спасибо !

Рам Баладжи Суббайян.


person Ram Balaji Subbaiyan    schedule 30.12.2014    source источник
comment
Если ваше приложение обращается к диску, то область действия должна быть включена. В противном случае выдает эту ошибку. Вы можете попробовать проверить эту ссылку stackoverflow .com/questions/27035665/   -  person KRR    schedule 03.01.2015


Ответы (1)


Ошибка возникает из-за неправильного пользователя учетной записи службы

 setServiceAccountUser("[email protected]")

Упомянутая здесь учетная запись пользователя должна иметь доступ на уровне домена. Также попробуйте включить делегирование на уровне домена для сервисного аккаунта.

person Aarish Ramesh    schedule 13.02.2017