2012-06-10 9 views
10

Estoy utilizando las bibliotecas de cliente de Google y trato de realizar una solicitud GET a Google Play API.Credencial de Google: esta cuenta de desarrollador no es propietaria de la aplicación

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

me sale

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

Mi aplicación no está publicado, habría que causan el problema?

+0

Tengo el mismo problema ... –

+0

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

+0

Finalmente resolví esta pregunta, mira esto en: http://stackoverflow.com/questions/11115381/unable-to-get-the-subscription-information-from-google-play-android-developer-ap –

Respuesta

0

Sospecho que el problema está exactamente en la publicación. Primero debe vincular su aplicación a su cuenta (desarrollador) y luego recibirá CLIENT_ID y otras credenciales (como clave secreta, etc.).

+0

"Enlace su aplicación a su cuenta "? ¿Cómo? ¿Dónde? En la API de Google Console? En Google Play? –

+0

Si desea publicar la aplicación de Android en Google Play, primero debe asignar su aplicación a su "cuenta de editor" [aquí] (https://play.google.com/apps/publish/). Si desea utilizar alguna otra API, debe consultar el sitio de inicio de la API correspondiente. –

+0

Considere que registrar ** nueva ** cuenta de publicación cuesta $ 25. Pero agregar nueva aplicación a su cuenta existente es gratis. –

4

El problema es que está utilizando las cuentas de servicio Flujo OAuth 2.0 para autorizar a la API android-publisher. Lo estaba haciendo de la misma manera. Sin embargo, Google requiere utilizar el flujo de aplicaciones del servidor web, lo cual es ridículo, ya que se necesita una interacción humana para permitir el acceso a la API.

Afortunadamente hay una forma de evitarlo. Solo tiene que obtener refresh_token, almacenar eso y seguir utilizándolo para futuras llamadas API. I wrote about it in more detail en mi blog.

+0

Desafortunadamente su enlace está muerto, ¿hay alguna posibilidad de que pueda republicar la información en otro lugar o, mejor aún, agregarlo a esta respuesta? – Jean

+0

@Jean Creo que a lo que se refiere Milán es [bajo esto ahora] (http://milancermak.wordpress.com/2012/08/24/server-side-verification-of-google-play-subsc) – Wojciech

+0

Gracias Wojciech .Solucioné el enlace ahora, ya que tuve que migrar lejos de Posterous. –

6

Tengo el mismo problema. Ocurre porque usted autoriza al usuario en la API de Google que no posee la aplicación y trata de obtener datos que pertenecen a su aplicación.

En este tema está bien descrito. http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=2528691&topic=16285&ctx=topic

Debe autorizar por OAuth2 el propietario de la aplicación, y luego usar Google API con token obtenido.

+1

Para agregar lo que dijo ikrovorotenko pasar el token de acceso del desarrollador o el token de acceso del usuario que ha sido autorizado por el desarrollador para acceder a los datos financieros de las aplicaciones. – Searock

1

También hemos tenido problemas porque queríamos validar una compra en nuestros servidores para desbloquear ciertas funciones. Probamos múltiples soluciones y marcos, escritos por otros usuarios de la comunidad e incluso implementaciones oficiales, pero ninguno funcionó.

Resulta que todo lo que teníamos que hacer era renovar nuestro token de OAuth (que acabamos de crear) y luego todo comenzó a funcionar.

Cuestiones relacionadas