2012-06-10 14 views
10

Korzystam z bibliotek klienta Google i próbuję wysłać prośbę o wprowadzenie do interfejsu API Google Play.Google Credential: to konto programisty nie jest właścicielem aplikacji

 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(); 

uzyskać

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

Moja aplikacja jest niepublikowane, to że przyczyną problemu?

+0

Mam taki sam problem ... –

+0

Podobne pytanie: http://stackoverflow.com/questions/11115381/unable-to-get-the-subscription-information- from-google-play-android-developer-ap –

+0

W końcu rozwiązałem to pytanie, sprawdź to na: http://stackoverflow.com/questions/11115381/unable-to-get-the-subscription-information-od-google-play-android-developer-ap –

Odpowiedz

0

Podejrzewam, że problem jest właśnie w publikacji. Najpierw musisz powiązać swoją aplikację z kontem (programistycznym), a następnie otrzymasz CLIENT_ID i inne dane uwierzytelniające (takie jak tajny klucz itd.).

+0

"Bind Twoja aplikacja na swoje konto "? W jaki sposób? Gdzie? W interfejsie API Google Console? W Google Play? –

+0

Jeśli chcesz opublikować aplikację na Androida w Google Play, najpierw musisz przypisać ją do "konta wydawcy" [tutaj] (https://play.google.com/apps/publish/). Jeśli chcesz użyć innego API, powinieneś zajrzeć do odpowiedniej strony domowej API. –

+0

Należy pamiętać, że rejestracja ** nowego ** konta wydawniczego kosztuje 25 USD. Ale dodanie nowej aplikacji do istniejącego konta jest bezpłatne. –

4

Problem polega na użyciu przepływu OAuth 2.0 konta usługi do autoryzacji do interfejsu API wydawcy Androida. Robiłem to w ten sam sposób. Jednak Google wymaga użycia przepływu aplikacji serwera internetowego, co jest śmieszne, ponieważ interakcja z człowiekiem jest potrzebna, aby umożliwić dostęp API.

Na szczęście istnieje sposób obejścia tego. Trzeba tylko uzyskać refresh_token, zapisać i używać go do przyszłych wywołań API. I wrote about it in more detail na moim blogu.

+0

Niestety twój link jest martwy, masz szansę na ponowne opublikowanie informacji w innym miejscu lub, jeszcze lepiej, dodanie jej do tej odpowiedzi? – Jean

+0

@Jean Myślę, że Milan odnosi się do tego [pod tym teraz] (http://milancermak.wordpress.com/2012/08/24/server-side-verification-of-google-play-subsc) – Wojciech

+0

Dzięki Wojciech .Naprawiłem link teraz, ponieważ musiałem migrować z dala od Posterous. –

6

Mam ten sam problem. Występuje, ponieważ autoryzujesz użytkownika w interfejsie API Google, który nie jest właścicielem aplikacji i próbuje pobrać dane należące do Twojej aplikacji.

W tym temacie jest dobrze opisany. http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=2528691&topic=16285&ctx=topic

Należy autoryzować właściciela aplikacji przez OAuth2, a następnie użyć Google API z uzyskanym tokenem.

+1

Aby dodać to, co powiedział ikrovorotenko, podaj token dostępu dewelopera lub token dostępu użytkownika, który uzyskał autoryzację od programisty, aby uzyskać dostęp do danych finansowych aplikacji. – Searock

1

Zmagaliśmy się również z tym problemem, ponieważ chcieliśmy zweryfikować zakup na naszych serwerach w celu odblokowania niektórych funkcji. Wypróbowaliśmy wiele rozwiązań i frameworków napisanych przez innych użytkowników społeczności, a nawet oficjalne wdrożenia, ale żaden z nich nie działał.

Okazuje się, że wystarczy odnowić token OAuth (który właśnie stworzyliśmy), a następnie wszystko zaczęło działać.

Powiązane problemy