SORU
25 Mart 2012, Pazar


V3 API hizmet Uygulamaları ve Google Analytics:-Sunucu Kimlik Doğrulaması OAuth2?

Rutin olarak kendi GA hesabımdan Google Analytics verileri çekmek için bir sunucu uygulaması yapmaya çalışıyorum. Not, sunucu tarafında kişisel bir uygulama kendi veri erişim, yani-son kullanıcı bu uygulama erişim yok.

Gibi, gibi Google API Console benim başvuru kayıt oldumHizmet Uygulamabana verdi., ^strong>İstemci KİMLİĞİve birÖzel Anahtar. Hizmet Uygulamaları kullanmayın anladığım kadarıylaUygulama GizliveYönlendirme URL-son kullanıcı, sunucu ve Sunucu Kimlik Doğrulaması bu akış içinde hiçbir yanı yok. Nitekim, Konsol API Google bana bir Sır verdi ve Yönlendirmek için bir URL bana sor vermedi.

Ne yazık ki, Google's PHP Client API içinde Servis Uygulaması kimlik doğrulaması için nasıl anlamaya olamaz. Web uygulamaları kimlik doğrulaması hakkında kapsamlı bir belge yokilebir son kullanıcı.

Google belgelerine it is possible to authenticate server-to-server by signing a JWT request with the private key öneriyor. Ben sadece PHP istemci API (kaynak göz attım ve definitely a script var, ancak bu özel anahtar ile bir istek imzalar.) içinde yapmak için nasıl anlamaya olamaz

Bir şey mi kaçırıyorum? Nasıl benim özel anahtar ile Hizmet Uygulaması ve Google PHP istemci API için kimlik doğrulaması yapabilir miyim?

Açıklık getirmek için düzenlenmiş

CEVAP
10 NİSAN 2012, Salı


21 Temmuz 2012 UPDATE

Google Analytics API V3 şimdi OAuth2 simgeleri bir tarafından döndürülen destekler .p12-JWT imzalı isteği. Yanişimdi API w/ hizmet hesaplarını Analytics kullanabiliriz.

Şu anda her geçen gün ölçümleri 4 yıl yapıyorcehennem için sadece.

Burada bir hızlı 'n' dirty adım adım:

  1. Google API Console gidin ve yeni bir uygulama oluşturun

  2. Hizmetlerisekme, flipGoogle Analyticsgeçin

  3. API Erişimisekmesini tıklayınBir OAuth2 oluşturun.0 İstemci KİMLİĞİ

    • adınızı girin, bir logo yüklemek ve tıklatınGelecek

    • seçinHizmet hesabıseçeneği ve basınİstemci KİMLİĞİ oluşturun

    • özel anahtarınızı yükleyin

  4. Şimdi geri döndünAPI Erişimisayfa. Adlı bir bölüm göreceksinizHizmet hesabıbir ileİstemci KİMLİĞİveE-posta adresi

    • E-posta adresi gibi bir şey . kopya ^em>####@developer.gserviceaccount.com)

    • GA Admin adresini ziyaret edinkendi özellikleri için bir kullanıcı olarak bu e-posta Ekle

    • Bu bir zorunluluktur; aksi takdirde şifreli hataları alırsınız.

  5. Github üzerinden Google PHP Client API en son alın

    git submodule add https://github.com/google/google-api-php-client.git google-api-php-client-read-only
    
  6. ''(Güncellenmiş tüm sınıf adları ile ilgili ipuçları için teşekkürler) rulo: . n Rock

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

aşağıda özgün çözüm


Bu, belirsiz belgeler, most Google APIs do not support service accounts yet Google Analytics de dahil olmak üzere rağmen gibi görünüyor. Onlar Özet OAuth2 simgeleri ile döndü .p12 JWT talep imzaladı. Yani şu andan itibaren, senkullanamazsınız bir Google API V3 Analytics hizmet hesabı.

Çözüm:

  1. Google API console oluşturmak, biristemciuygulama.

  2. Google PHP Client API örnekler client_auth_url oluşturmak için adımları*, client_secret*5,kullanarak izleyin ve 7**

  3. Google giriş cURL kullanarak. (Çerez dosyası kullandığınızdan emin olun!)

  4. CURL client_auth_url açın ve formu doldurun. Emin sen curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); ve set yapmak curl_setopt($ch, CURLOPT_HEADER, 1); authorization_code yanıt Location: Başlığı olacak.

  5. , *, redirect_uri, *client_secret13 ve bu aktivasyon kodunu kullanarak 4, Google's OAuth2 Token machine isteği sonrası Adım. Yazı alanları grant_type = "authorization_code" içerir emin olun.

  6. Yaşasın, artık asla sona erecek refresh_token access_token bir çalışma var! Post, *, redirect_uri*client_secret19 senin, Google's OAuth2 Token machine talep refresh_token access_token süresi ve alacaksın ne zaman bir yeni bir tane.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • FrameCityJackal

    FrameCityJac

    4 Aralık 2010
  • PlayStation

    PlayStation

    16 Aralık 2005