Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Suscripción a Android y API de Google

Estoy intentando utilizar el nuevo sistema de suscripción de Google Play en mi aplicación (ya tenía la facturación en la aplicación funcionando bien). He realizado con éxito la facturación de suscripción, pero ahora quiero recuperar información sobre esta suscripción usando el apis google como se indica en la documentación de android (http://developer.android.com/guide/market/billing/billing_subscriptions.html) .

Quiero que mi servicio sea capaz de hacer la llamada a la API para recuperar estas informaciones, pero tengo problemas con la autenticación (con oauth2). Hasta ahora, esto es lo que hago (en mi servicio php):

require_once 'google-api-php-client/src/apiClient.php' const SERVICE_ACCOUNT_NAME = 'email from services account access'; $key = 'content of my private key retrieved from services account access'; $client = new apiClient(); $cred = new apiAssertionCredentials(SERVICE_ACCOUNT_NAME, array('https://www.googleapis.com/auth/androidpublisher'), $key); $assertion = $cred->generateAssertion(); // This generate my encrypted JWT 

A continuación, intento recuperar el token de acceso con este objeto JWT. El problema es que cuando uso el token de acceso dado tengo el error de que la cuenta de desarrollador no posee la aplicación, lo cual no es cierto.

(Sé que esta no es la manera de hacerlo, pero solo quería recuperar el access_token usando el JWT para entender por qué no funciona, si lo hago como se indica en la documentación de google apis no funciona).

Necesito hacer esta llamada a la API desde un servidor, por lo que no hay que involucrar a ningún usuario final (sin consentimiento manual).

  • ¿Cómo eliminar la suscripción de la lista de productos en la consola de desarrollo y cuál será su efecto en los usuarios suscritos antiguos?
  • ¿Cuál es la respuesta del producto de suscripción cancelado del desarrollador de google? Api android
  • 2 Solutions collect form web for “Suscripción a Android y API de Google”

    Tuve el mismo problema y, en última instancia, descubrí que desde ahora las cuentas de servicio no pueden acceder a la API de Play.

    No estoy seguro de cuando Google planea arreglar esto, pero puede evitar esto creando un ID de cliente de aplicación web y configurando una página de inicio de sesión básica para generar primero un código utilizando la nueva aplicación web Datos del cliente y va a $ cliente- > CreateAuthUrl ():

     $client = new apiClient(); $key = file_get_contents(KEY_FILE); $client->setClientId(CLIENT_ID); $client->setClientSecret(CLIENT_SECRET); $client->setRedirectUri(MY_WEBAPP_URL); $client->setDeveloperKey($key); $client->setScopes(array('https://www.googleapis.com/auth/androidpublisher')); $authUrl = $client->createAuthUrl(); print "<a class='login' href='$authUrl'>Connect Me!</a>"; 

    Esto le llevará a una página de inicio de sesión de Google donde debe iniciar sesión con la cuenta de desarrollador. Al autorizar la aplicación, volverá a la URL de la aplicación web tal como se define cuando configura el ID de cliente con un CODE como parámetro get. Puede utilizar para generar un token (y, lo que es más importante, un token de actualización) de la siguiente manera:

     $url = 'https://accounts.google.com/o/oauth2/token'; $fields = array( 'grant_type'=>'authorization_code', 'code'=>$code, 'client_id'=>CLIENT_ID, 'client_secret'=>CLIENT_SECRET, 'redirect_uri'=>MY_WEBAPP_URL ); // cURL call to OAuth URL with $fields sent as POST 

    Esto debería devolver los datos JSON con un token de actualización. Guarde este token y utilícelo para realizar otra llamada siempre que necesite generar un token de acceso. Es esencial que ejecute el mismo código que hizo para obtener el token de actualización, pero con diferentes campos:

     $fields = array( 'grant_type'=>'refresh_token', 'refresh_token'=>$refresh_token, 'client_id'=>CLIENT_ID, 'client_secret'=>CLIENT_SECRET, ); 

    Esto le dará un token de acceso que puede utilizar para obtener datos de compra desde la siguiente URL: https://www.googleapis.com/androidpublisher/v1/applications/[PACKAGE]/subscriptions/[SKU]/purchases/[PURCHASE_TOKEN]?access_token=[ACCESS_TOKEN]

    El truco es obtener el token de actualización, una vez que tenga que el resto debe ser bastante sencillo.

    Tengo el mismo problema. Se produce porque autorizas al usuario de la API de Google que no es propietario de la aplicación e intenta obtener datos que afecten a tu aplicación.

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

    Debe autorizar por OAuth2 al propietario de la aplicación y, a continuación, utilizar la API de Google con el token obtenido.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.