2012-06-24 10 views
5

मैं ClientLogin विधि का उपयोग कर रहा हूँ और cURL का उपयोग कर गूगल एपीआई के लिए लॉग इन करने के लिए। यह ठीक काम करता है और मुझे आगे के उपयोग के लिए टोकन प्राप्त होता है। अब मैंगूगल Spreadshet एपीआई को लॉग इन ClientLogin और PHP/cURL

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

का उपयोग कर यह ठीक काम करता है और मैं खाता मेरी Google डॉक्स पर उपलब्ध सभी दस्तावेजों की एक सूची प्राप्त द्वारा docs.google.com क्वेरी कर सकते हैं। लेकिन यूआरएल api documentation से प्राप्त के साथ spreadsheets.google.com अगर मैं एक ही क्वेरी का प्रयास करें:

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

मैं कह रही है कि इस्तेमाल किया टोकन अमान्य है एक 401 त्रुटि मिलती है। मैं दोनों मामलों में एक ही टोकन और क्वेरी का उपयोग कर रहा हूं। क्या मुझे Google स्प्रेडशीट्स एपीआई के लिए एक अलग टोकन चाहिए?

संपादित करें: यह मैं कैसे टोकन का अनुरोध है:

 $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

इसी ठीक होना चाहिए होगा, लेकिन बाहर टिप्पणी $ कर्ल = curl_init(); और spreadsheets.google.com के लिए उसी $ curl ऑब्जेक्ट का भी उपयोग करें। मुझे बताएं कि क्या –

+0

दुर्भाग्यवश इसका कोई प्रभाव नहीं है – Marco

+0

आह, मुझे लगता है कि आपको सभी डोमेन के लिए लेख लिखना होगा। मुझे लगता है कि Google docs.google.com और स्प्रेडशीट का व्यवहार करता है। google .com दो अलग-अलग सेवाओं के रूप में स्वयं के लेखों की आवश्यकता है। आप जल्दी से जांच कर सकते हैं -> 1. Google डॉक्स की सूची प्राप्त करें, ऑथ सहेजें 2. स्प्रेडशीट्स के लिए एक ही ऑथ का उपयोग करें, विफलता को कैप्चर करें, और 3. Google डॉक्स के लिए उसी ऑथ का दोबारा उपयोग करें, अगर यह काम करता है, तो हमारा धारणा सही है। –

उत्तर

6

लघु जवाब - हां। आपको विभिन्न सेवाओं के लिए विभिन्न टोकन उत्पन्न करने की आवश्यकता है। प्रत्येक मामले में एक आह टोकन पुनर्प्राप्त करने के लिए आपके द्वारा पास किए जाने वाले सेवा नाम अलग-अलग होते हैं। यहाँ अधिक जानकारी के लिए देखें - https://developers.google.com/gdata/faq

डॉक्स से उदाहरण के लिए स्प्रेडशीट के लिए अनुरोध

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

धन्यवाद, वह लिंक लिंक कुछ छिपा खजाना है :) – aorcsik

संबंधित मुद्दे