2012-06-24 12 views
5

Google API'lerine giriş yapmak için ClientLogin yöntemini ve cURL'yi kullanıyorum. Bu iyi çalışıyor ve daha fazla kullanım için bir Token aldım. Şimdi Bu iyi çalışır ve hesabımda google docs mevcut tüm belgelerin listesini almakClientLogin ve PHP/cURL kullanarak Google Spreadshet API'ya giriş

 $curl = curl_init(); 

     $headers = array(
      "Authorization: GoogleLogin auth=" . $auth, 
      "GData-Version: 3.0", 
     ); 

     curl_setopt($curl, CURLOPT_URL, "https://docs.google.com/feeds/default/private/full"); 
     curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
     curl_setopt($curl, CURLOPT_POST, false); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

     $response = curl_exec($curl); 
     curl_close($curl); 

kullanarak docs.google.com sorgulayabilir. Aynı sorgu deneyin Ama eğer api documentation elde edilen URL ile spreadsheets.google.com için:

https://spreadsheets.google.com/feeds/spreadsheets/private/full 

ben kullanılan bir simgedir geçersiz olduğunu söyleyen bir 401 hatası alıyorum. Her iki durumda da aynı belirteci ve sorguyu kullanıyorum. Google e-tablo API'sı için farklı bir belirticiye ihtiyacım var mı?

Düzenleme: Bu benim Token talep nasıl:

 $clientlogin_url = "https://www.google.com/accounts/ClientLogin"; 
     $clientlogin_post = array(
      "accountType" => "HOSTED_OR_GOOGLE", 
      "Email" => "my email", 
      "Passwd" => "my password", 
      "service" => "writely", 
      "source" => "my application name" 
     ); 

     $curl = curl_init($clientlogin_url); 

     curl_setopt($curl, CURLOPT_POST, true); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $clientlogin_post); 
     curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

     $response = curl_exec($curl); 

     preg_match("/Auth=([a-z0-9_-]+)/i", $response, $matches); 
     $auth = $matches[1]; 
     curl_close($curl); 
+0

Aynı simge iyi olmalı olurdu, ama $ bukle = curl_init açıklama - Daha fazla bilgi için buraya bakınız ve aynı $ curl nesnesini spreadsheets.google.com için de kullanın. Bu, –

+0

'un maalesef bu – Marco

+0

Ah etkisine sahip olmadığını bilmeme izin verin, bence tüm alanlar için auth gerekiyor. Google'ın docs.google.com ve elektronik tablolarını ele aldığını düşünüyorum. google .com, kendi yetkilerini gerektiren iki farklı hizmet olarak. Hızlıca test edebilirsiniz -> 1. google dokümanlar listesini alın, auth kaydedin 2. e-tablolar için aynı auth'ı kullanın, hatayı yakalayın ve 3. google dokümanlar için aynı hatayı kullanın, eğer işe yararsa varsayım doğrudur. –

cevap

6

Kısa cevap - Evet. Farklı servisler için farklı jetonlar oluşturmanız gerekir. Auh jetonu almak için girdiğiniz hizmet adları her durumda farklıdır. ;) (

https://developers.google.com/gdata/faq dokümanlardan Örneğin elektronik tablolar için req

$clientlogin_post = array(
            "accountType" => "HOSTED_OR_GOOGLE", 
            "Email" => "my email", 
            "Passwd" => "my password", 
            "service" => "wise", 
            "source" => "my application name" 
       ); 
+0

Teşekkürler, bu SSS bağlantısı gizli bir hazinedir :) – aorcsik

İlgili konular