2012-06-10 2 views
10

Я использую клиентские библиотеки Google и пытаюсь сделать запрос GET API Google Play.Google Credential: Эта учетная запись разработчика не имеет приложения

 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." 
} 

Мое приложение неопубликованные, будет что причиной проблемы?

+0

У меня такая же проблема ... –

+0

Аналогичный вопрос: http://stackoverflow.com/questions/11115381/unable-to-get-the-subscription-information-from-google-play-android-developer-ap –

+0

Я, наконец, решил этот вопрос, проверьте это: http://stackoverflow.com/questions/11115381/unable-to-get-the-subscription-information-from-google-play-android-developer-ap –

ответ

0

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

+0

"Bind ваше приложение в свою учетную запись "? Как? Где? В API Google Консоли? В Google Play? –

+0

Если вы хотите опубликовать приложение Android в Google Play, вы должны сначала назначить свое приложение своей учетной записи издателя [здесь] (https://play.google.com/apps/publish/). Если вы хотите использовать какой-либо другой API, вы должны посмотреть соответствующий веб-сайт API. –

+0

Учтите, что регистрация ** нового ** издательского аккаунта стоит 25 долларов США. Но добавление нового приложения в существующую учетную запись бесплатное. –

4

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

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

+0

К сожалению, ваша ссылка мертва, вы можете повторно опубликовать информацию в другом месте или, что еще лучше, добавить ее в этот ответ? – Jean

+0

@Jean Я думаю, что Милан имеет в виду [под этим сейчас] (http://milancermak.wordpress.com/2012/08/24/server-side-verification-of-google-play-subsc) – Wojciech

+0

Спасибо Wojciech ,Я исправил связь сейчас, так как мне пришлось мигрировать от Posterous. –

6

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

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

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

+1

Чтобы добавить то, что ikrovorotenko сказал передать токен доступа разработчика или токен доступа пользователя, который был разрешен разработчиком для доступа к финансовым данным приложений. – Searock

1

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

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

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