Google Credential: эта учетная запись разработчика не имеет приложения

Я использую клиентские библиотеки Google и пытаюсь сделать запрос GET API Google Play.

        GoogleCredential credential= new GoogleCredential.Builder().setTransport(netHttpTransport)
                .setJsonFactory(jacksonFactory)
                .setServiceAccountId(CLIENT_ID)
                .setServiceAccountScopes(SCOPE)
                .setServiceAccountPrivateKeyFromP12File(file)
                .build();
                credential.refreshToken();     
        HttpRequestFactory requestFactory =netHttpTransport.createRequestFactory(credential);
        GenericUrl url = new GenericUrl(URI);
        HttpRequest request = requestFactory.buildGetRequest(url);
        HttpResponse response = request.execute();

Я получаю

 {
  "code" : 401,
  "errors" : [ {
    "domain" : "androidpublisher",
    "message" : "This developer account does not own the application.",
    "reason" : "developerDoesNotOwnApplication"
  } ],
  "message" : "This developer account does not own the application."
}

Мое приложение не опубликовано, это вызовет проблему?

Ответ 1

У меня такая же проблема. Это происходит потому, что вы авторизуете пользователя в Google API, который не владеет этим приложением и пытается получить данные, принадлежащие вашему приложению.

В этом разделе это хорошо описано. http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=2528691&topic=16285&ctx=topic

Вы должны разрешить OAuth2 владельцу приложения, а затем использовать Google API с полученным токеном.

Ответ 2

Проблема в том, что вы используете поток служб OAuth 2.0 для авторизации API-интерфейса android-издателя. Я делал это так же. Однако Google требует использовать поток приложений веб-серверов, что смешно, так как для взаимодействия с API требуется взаимодействие с человеком.

К счастью, вокруг есть способ. Вам просто нужно получить refresh_token, сохранить это и продолжать использовать его для будущих вызовов API. Я написал об этом более подробно в своем блоге.

Ответ 3

Мы также боролись с этой проблемой, так как хотели проверить покупку на наших серверах, чтобы разблокировать некоторые функции. Мы пробовали несколько решений и фреймворков, написанных другими пользователями сообщества и даже официальными реализациями, но никто не работал.

Оказывается, все, что нам нужно было, это обновить токен OAuth (который мы только что создали), а затем все это начало работать.

Ответ 4

Я подозреваю, что проблема именно в публикации. Сначала вам нужно привязать свое приложение к своей учетной записи (разработчику), после чего вы получите CLIENT_ID и другие учетные данные (например, секретный ключ и т.д.).