ver tienes sesion servicio permisos permiso para pantalla los inicio google funciona cuenta con como clientes claves autorizacion auth php google-api oauth-2.0 google-analytics-api jwt

php - tienes - Aplicaciones de servicio y Google Analytics API V3: ¿Autenticación OAuth2 de servidor a servidor?



oauth2 token (4)

Intento hacer una aplicación de servidor para extraer rutinariamente datos de Google Analytics de mi propia cuenta de GA. Tenga en cuenta que es una aplicación personal del lado del servidor que accede a mis propios datos, es decir, no hay un usuario final que acceda a esta aplicación.

Como tal, registré mi aplicación en la consola de la API de Google como una aplicación de servicio , que me dio una identificación de cliente y una clave privada . Entiendo que las aplicaciones de servicio NO usan Application Secret y Redirect URL ya que no hay un usuario final en este flujo de autenticación de servidor a servidor. De hecho, Google API Console no me dio ningún secreto y no me pidió una URL de redireccionamiento.

Lamentablemente, no puedo averiguar cómo autenticar mi aplicación de servicio dentro de la API de cliente PHP de Google . Existe una amplia documentación sobre la autenticación de aplicaciones web con un usuario final.

La documentación de Google sugiere que es posible autenticarse de servidor a servidor al firmar una solicitud JWT con la clave privada . Simplemente no puedo entender cómo hacerlo dentro de la API del cliente PHP (aunque he navegado por el código fuente y definitivamente hay un script que firma una solicitud con la clave privada).

¿Me estoy perdiendo de algo? ¿Cómo puedo realizar la autenticación para una aplicación de servicio con mi clave privada y la API del cliente de Google PHP?

Editado para mayor claridad


ACTUALIZACIÓN 21 de julio de 2012

Google Analytics API V3 ahora admite tokens OAuth2 devueltos por una solicitud JWT firmada por .p12. Es decir, ahora podemos usar la API de Analytics con cuentas de servicio .

Actualmente tira de 4 años de métricas diarias, solo por el placer de hacerlo.

Aquí hay un paso rápido ''n'' sucio:

  1. Vaya a la consola API de Google y cree una nueva aplicación

  2. En la pestaña Servicios , activa el interruptor Google Analytics

  3. En la pestaña Acceso a la API , haz clic en Crear una ID de cliente OAuth2.0

    • ingrese su nombre, cargue un logotipo y haga clic en Siguiente

    • seleccione la opción Cuenta de servicio y presione Crear ID de cliente

    • descarga tu clave privada

  4. Ahora estás de vuelta en la página de Acceso a la API . Verá una sección llamada Cuenta de servicio con una ID de cliente y una dirección de correo electrónico

    • Copie la dirección de correo electrónico (algo como ####@developer.gserviceaccount.com )

    • Visite su administrador de GA y agregue este correo electrónico como usuario a sus propiedades

    • Es un requisito; obtendrá errores crípticos de lo contrario.

  5. Obtenga la última API de Google PHP Client a través de Github

    git submodule add https://github.com/google/google-api-php-client.git google-api-php-client-read-only

  6. Rock ''n'' roll (gracias a todos por sus consejos sobre los nombres actualizados de las clases):

    // api dependencies require_once(PATH_TO_API . ''Google/Client.php''); require_once(PATH_TO_API . ''Google/Service/Analytics.php''); // create client object and set app name $client = new Google_Client(); $client->setApplicationName(APP_NAME); // name of your app // set assertion credentials $client->setAssertionCredentials( new Google_Auth_AssertionCredentials( APP_EMAIL, // email you added to GA array(''https://www.googleapis.com/auth/analytics.readonly''), file_get_contents(PATH_TO_PRIVATE_KEY_FILE) // keyfile you downloaded )); // other settings $client->setClientId(CLIENT_ID); // from API console $client->setAccessType(''offline_access''); // this may be unnecessary? // create service and get data $service = new Google_Service_Analytics($client); $service->data_ga->get($ids, $startDate, $endDate, $metrics, $optParams);

solución original a continuación

Parece que, a pesar de la documentación ambigua, la mayoría de las API de Google aún no son compatibles con las cuentas de servicio , incluido Google Analytics. No pueden digerir tokens OAuth2 devueltos por una solicitud JWT firmada .p12. Por lo tanto, a partir de ahora, no puede usar Google Analytics API V3 con una cuenta de servicio .

Solución:

  1. En la consola API de Google , crea una aplicación cliente .

  2. Siga los pasos de los ejemplos de la API del cliente de Google PHP para generar un client_auth_url usando su client_id , client_secret y redirect_uri

  3. Ingresa a Google usando cURL. (¡Asegúrese de usar un archivo de cookies!)

  4. Abra el client_auth_url en CURL y complete el formulario. Asegúrese de configurar curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); y curl_setopt($ch, CURLOPT_HEADER, 1); como el authorization_code estará en la Location: encabezado de la respuesta.

  5. Usando su client_id , client_secret , redirect_uri y el código de activación del Paso 4, publique una solicitud en la máquina Token OAuth2 de Google . Asegúrese de incluir grant_type = "authorization_code" en sus campos de publicación.

  6. ¡Hurra, ahora tienes un refresh_token que nunca caduca y un access_token trabajo! Publique una solicitud en la máquina Token OAuth2 de Google con su client_id , client_secret , redirect_uri y refresh_token cuando access_token su access_token y obtendrá una nueva.


El API API de Google API ahora admite cuentas de servicio en el enlace troncal.

La implementación aún no se ha lanzado, por lo que deberá checkout la última versión del cliente PHP.

He preparado una aplicación de muestra que demuestra cómo puede usar las cuentas de servicio para acceder a la API de Predicción de Google. Para ver el ejemplo, eche un vistazo a examples / prediction / serviceAccount.php o visite: http://code.google.com/p/google-api-php-client/source/browse/trunk/examples/prediction/serviceAccount.php



puede utilizar la biblioteca php muy útil GAPI (Interfaz API API de Google Analytics) para acceder a Google Analytics sin OAuth. Es fácil de usar