2

Я пытаюсь получить токен доступа для учетной записи службы Google. Ниже мой код -Получение 403 - Запрещено для учетной записи службы Google

String SERVICE_ACCOUNT_EMAIL = "[email protected]"; 
List scope = new ArrayList(); 
scope.add("https://www.googleapis.com/auth/admin.directory.user"); 
String keyFile = "C:\\edited-privatekey.p12"; 
HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); 
JsonFactory JSON_FACTORY = new JacksonFactory(); 
GoogleCredential credential = new GoogleCredential.Builder() 
.setTransport(HTTP_TRANSPORT) 
.setJsonFactory(JSON_FACTORY) 
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
.setServiceAccountScopes(scope) 
.setServiceAccountPrivateKeyFromP12File(new java.io.File(keyFile)) 
.build(); 

credential.refreshToken(); 
String accessTokens = credential.getAccessToken(); 

Хотя код работает отлично, и я получаю маркер доступа, когда я пытаюсь использовать его в «GET» Пользователь приложения Google с помощью API, каталогов Google, я получаю 403 - Запрещенный код ответа. Может ли кто-нибудь помочь?
Я знаю, что код для пользователя GET верен, потому что он отлично работает с токеном доступа, созданным администратором Google Apps.

ответ

4

Вам необходимо установить учетную запись администратора с:

.setServiceAccountUser(some_admin_email) 

И убедитесь, что ваш App (с правильными прицелов) предоставляется доступ в CPanel.

+1

Благодарим за помощь. Я получаю следующее сообщение об ошибке после добавления setServiceAccount - исключения в потоке "главный" com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request { "ошибки": "ACCESS_DENIED", "error_description" : «Запрошенные области не разрешены: https://www.googleapis.com/auth/admin.directory.user» } Доступ к API и сервисы также включены (иначе токен доступа администратора не работал). Доступ к области видимости также включен. Есть ли другие настройки, которые я должен включить? – Sayali

2

Перейти к https://admin.google.com. Войдите и добавьте контроль безопасности, если он не существует в разделе «Дополнительные элементы управления». Нажмите на Security->Advance Settings->Manage ThirdParty OAuth Client Access и убедитесь, что эти области добавлены (разделены запятыми) для вашего идентификатора учетной записи службы xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com.

Смежные вопросы