2011-09-21 16 views

Respuesta

11

Si está creando una aplicación de cuenta de servicio para acceder a Google Analytics.

  1. Registrarlo en Google a través de https://code.google.com/apis/console. En la pestaña Acceso a API, haga clic en Crear ID de cliente, elija Cuenta de servicio. Almacene el archivo de clave que Google generará y recuerde la contraseña para esa clave.
  2. Aquí hay un código para que pueda empezar

    require 'rubygems' 
    require 'google/api_client' 
    
    api_client = Google::APIClient.new 
    path_to_key_file ="/path/to/key/file-privatekey.p12" 
    passphrase = "google_generated_password" 
    key = Google::APIClient::PKCS12.load_key(path_to_key_file, passphrase) 
    

vez que una tecla está disponible, inicializar el asertor con su ID de cliente (e-mail en la consola de las API) y autorización ámbitos.

asserter = Google::APIClient::JWTAsserter.new(
    '[email protected]com', 
    'https://www.googleapis.com/auth/analytics.readonly', 
    key) 

# To request an access token, call authorize: 
api_client.authorization = asserter.authorize() 
puts api_client.authorization.access_token 

http://code.google.com/p/google-api-ruby-client/wiki/ServiceAccounts

+0

me sale esto: 'Autorización fallado. Mensaje del servidor: {"error": "invalid_grant"} '. He oído a la gente decir que cambie el modo de concesión a fuera de línea, pero ¿hay alguna forma de hacerlo desde la gema de rubí? – NullVoxPopuli

0

he respondido algo similar en un par de otros mensajes que encontré que eran como éste ... así que en caso que su relevante, por rubí, usando el google-api-cliente (para cualquiera de las API de Google), hay algunas entradas y salidas con autenticación cuando se utiliza una clave api en oposición a OAuth ...

He descrito este proceso (usando un servidor de claves api) al the code abode.

Tiene que establecer explícitamente el parametro authorzation en nil al construir el cliente; de ​​lo contrario, la gema intenta usar OAuth para autenticarse, por lo que si llama desde un servidor usando una clave api, siempre obtendrá un 401 no autorizado.

the code abode - google-api-client for ruby

Cuestiones relacionadas