Ошибка при использовании Marketplace приложения customerLicense с учетной записью службы OAuth2

РЕШЕНИЕ

Я разобрался, как решить эту проблему.

Прежде всего, вот моя реализация с учетной записью службы:

// Build service account credential.
    GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
        .setJsonFactory(JSON_FACTORY)
        .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
        .setServiceAccountScopes(Collections.singleton("https://www.googleapis.com/auth/appsmarketplace.license"))
        .setServiceAccountPrivateKeyFromP12File(new File("/path/to/mykey/key.p12"))
//            .setServiceAccountUser("NOT SET THIS LINE")
        .build();

        License build = new License.Builder(httpTransport, JSON_FACTORY, credential).setApplicationName("My Application").build();
    Licenses execute = build.customerLicense().get("9999999999", "domain.test.com").execute();

Этот объект License Builder сам является реализацией, основанной на новом google-api-client 1.17 и выше. Если кто-то может посоветовать мне, как я могу поделиться с остальным сообществом, я буду рад сделать это.

Лучший,

Я разместил другую ветку,Google Apps Marketplace API customerLicense с OAuth2, объясняя мои намерения использовать этот API со стратегией OAuth2 Service Account.

Я перепробовал каждый метод и официальную библиотеку, и всегда получаюНеверный заголовок OAuth сообщение илинелицензированный

Я собираюсь подробно рассказать, что такое декорации и что я пробовал:

У меня есть и Google App Marketplace, которые используют служебную учетную запись OAuth2, потому что все задачи выполняются в фоновом режиме.Этот проект API также имеет ключи учетной записи службы и ключи учетной записи веб-клиента.Я опубликовал приложение, ограниченное для моего домена, только потому, что я все еще разрабатываю. Поэтому я установил приложение для своего домена.На этом этапе, если я запросил Лицензию клиента с идентификатором проекта API и идентификатором клиента, который является доменным именем, я должен увидеть ЛИЦЕНЗИЮ ПРИЛОЖЕНИЯ для своего домена.Я использовал эти банкиhttps://developers.google.com/google-apps/marketplace/v2/developers_guide получить доступ к Лицензионному API.

Это мой код:

String appName = "MY APP"; AppsMarketService service = new AppsMarketService(); service.appId = "NUMBER_APP_ID"; service.appName = appName; service.endpoint = "https://www.googleapis.com/appsmarket/v2/"; service.consumerKey = service.appId + ".apps.googleusercontent.com"; service.consumerSecret = "CLIENT_SECRET_FROM_WEB_OAUTH2_API_PROJECT"; service.authorize();

Я получаю 403 запрещено, если я использую этот код.

Если я изменил appId для префикса clientId из моего веб-проекта API OAuth2, я получу 200, но с телом UNLICENSED.Я добавил область в свое приложениеhttps://www.googleapis.com/auth/appsmarketplace.license и я все еще получаю тот же результат.Я также попытался получить токен доступа от администратора с помощью рукопожатия учетной записи службы, а затем использовать этот токен доступа Oauth2 для доступа к лицензии API и тому же результату.Неверный OAuth-токен

Мои вопросы:

Есть ли способ получить доступ к этому API с помощью ключей учетной записи службы, принимая во внимание, что в ключах учетных записей службы не указан секрет потребителя, только идентификатор клиента и файл закрытого ключа?Есть ли обновленная библиотека, чтобы использовать это с OAuth2, потому что я вижу, что все эти библиотеки используют OAuth1 с двухсторонней аутентификацией?

Было бы замечательно, если бы кто-то мог помочь мне, потому что мы пытаемся перенести наши 7 старых приложений Google Marketplace с OAuth1 на OAuth2 в соответствии с запросом Google, но у нас есть некоторые черные дыры в нашей реализации, если мы не сможем запросить, какие домены имеют наше приложение установлено.

Лучший,

Ответы на вопрос(1)

Ваш ответ на вопрос