Доступ запрещен, запрошенные области запрещены для учетной записи службы Google

Создал проект из консоли разработчика Google и создал учетную запись службы. Скачал хранилище ключей. Мне нужно использовать google admin sdk для создания / удаления / доступа пользователей. Я вижу Admin SDK ON APIs & Auth-> API. Не удалось авторизоваться из-за ошибок области.

Пример фрагмента кода Java

public boolean makeConnectionWithGoogleAPI(){

try{
           List<String> scopes = Arrays.asList("https://www.googleapis.com/auth/admin.directory.user",
                "https://www.googleapis.com/auth/admin.directory.user.readonly");

      HttpTransport httpTransport = new NetHttpTransport();
      JacksonFactory jsonFactory = new JacksonFactory();

      GoogleCredential credential = new GoogleCredential.Builder()
          .setTransport(httpTransport)
          .setJsonFactory(jsonFactory)
          .setServiceAccountId(clientEmail)
          .setServiceAccountUser(userId)
          .setServiceAccountScopes(scopes)
          .setServiceAccountPrivateKeyFromP12File(
              new java.io.File(privateKeyStoreLocation))
          .build();

      Directory admin =
          new Directory.Builder(httpTransport, jsonFactory, null)
          .setHttpRequestInitializer(credential).build();

      Directory.Users.List list = admin.users().list();
      Users users = list.execute();
      List<User> listUsers=users.getUsers();
      for(User user:listUsers){
          System.out.println(user.getId());
      }
      return true;
}catch(Exception e){
        e.printStackTrace();
}
  return false;
}

com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request {"error": "access_denied", "error_description": "Запрошенные области не разрешены: https://www.googleapis.com/auth/admin.directory.user https://www.googleapis.com/auth/admin.directory.user.readonly"} на com.google.api.client .auth.oauth2.TokenResponseException.from (TokenResponseException.java:105) в com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed (TokenRequest.java:287)


person user3240209    schedule 30.01.2014    source источник
comment
Да, это помогло добавить необходимые области из консоли администратора - ›Безопасность-› Расширенные настройки- ›Управление OAuth стороннего клиента. Необходимо указать clientId учетной записи службы с областями. Щелкните Authroize. В коде используйте электронную почту клиента, а также необходимо указать домен Directory.Users.List list = admin.users (). List (). SetDomain (clientDomain);   -  person user3240209    schedule 30.01.2014


Ответы (3)


У нас была эта проблема - в документации Google об этом не говорится.

Ваш идентификатор клиента, который вы создали для API, - это то, что вы вводите в качестве имени клиента в списке области действия API.

Зайдите сюда и введите свой проект. Установите API, к которым вы хотите иметь доступ: https://console.developers.google.com/project

Затем на вкладке «Учетные данные» слева вы создаете новую информацию об идентификаторе / имени клиента OAuth.

Вы берете здесь имя клиента и затем переходите к интерфейсу безопасности администратора приложений: https://admin.google.com/AdminHome?chromeless=1#OGX:ManageOauthClients Или: Admin.google.com> затем Security> Then Advanced> Then Manage OAuth Clients

Возьмите Client_ID, который вы получили при создании своего проекта из консоли разработчика, и назначьте его в качестве своего имени клиента, которому вы хотите предоставить доступ к определенным областям в вашем проекте API.

Для нас, в любом случае, это то, что решило наши ошибки отказа в доступе.

Позор Google за то, что не задокументировал этот процесс должным образом. Нам потребовалось 4 дня, чтобы понять это. Мы являемся магазином .net, и даже в их пакетах NuGet были опечатки, орфографические ошибки и отсутствовали ресурсы. Очень неприятно, что многие из этих шагов не документированы лучше.

person FurnGuy    schedule 28.02.2014

Я не смог найти следующую опцию в предоставленной ссылке. Я потратил на это больше времени.

https://admin.google.com/AdminHome?chromeless=1#OGX%3aManageOauthClients Или: Admin.google.com> затем Безопасность> Затем Дополнительно> Затем Управление клиентами OAuth.

Есть ли какие-либо обновления в Google по этому поводу, пожалуйста, обновите, если у кого-то есть соответствующая информация. узнайте мой код ниже.

GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
          .setJsonFactory(JSON_FACTORY)
          .setServiceAccountId("[email protected]")
          .setServiceAccountScopes(scopes)
          .setServiceAccountPrivateKeyFromP12File(new File("D:\\ref\\privatekey.p12"))
          .setServiceAccountUser("xxxxxxxxxxxxxxxxxxx")
          .build();
 Compute compute = new Compute.Builder(
          httpTransport, JSON_FACTORY, null).setApplicationName(APPLICATION_NAME)
          .setHttpRequestInitializer(credential).build();
Compute.Instances.List instances = compute.instances().list(projectId, zoneName);
    InstanceList list = instances.execute();

сообщение об ошибке

403 Запрещено {"error": "access_denied", "error_description": "Запрошенные области запрещены: https://www.googleapis.com/auth/compute "}

person Md Ismail    schedule 14.05.2014

У меня такая же проблема 403 access_denied, которую можно исправить, выполнив следующие действия.

Как упоминается в FurnGuy

https://admin.google.com/AdminHome?chromeless=1#OGX:ManageOauthClients Или: Admin.google.com> затем Security> Then Advanced> Then Manage OAuth Clients

Возьмите Client_ID, который вы получили при создании своего проекта из консоли разработчика, и назначьте его в качестве своего имени клиента, которому вы хотите предоставить доступ к определенным областям в вашем проекте API.

введите описание изображения здесь

Имя клиента - это ваш идентификатор клиента, созданный из консоли разработчика, и добавьте область для примера https://www.googleapis.com/auth/admin.directory.group,https://www.googleapis..com/auth/admin.directory.orgunit.readonly

вы можете разделить его запятой, а затем авторизовать. вы можете попробовать это на своем локальном хосте: 8888

person damon leong    schedule 25.08.2014