2011-11-25 11 views
16

मैं एक Google कैलेंडर तक पहुंचने के लिए Google API v3 का उपयोग करने की कोशिश कर रहा हूं और यहां दस्तावेज़ों के अनुसार: http://code.google.com/apis/calendar/v3/using.html#intro और यहां: https://code.google.com/apis/console/, मुझे जिस समाधान की आवश्यकता है वह "सरल API एक्सेस" & "सर्वर ऐप्स के लिए कुंजी (आईपी के साथ) ताला) "।Google कैलेंडर जानकारी (PHP) तक पहुंचने के लिए मैं Google की "सरल API एक्सेस कुंजी" का उपयोग कैसे करूं?

अब, जब मैं इस कोड के साथ एक पृष्ठ बनाने:

session_start(); 

require_once 'fnc/google-api-php-client/src/apiClient.php'; 
require_once 'fnc/google-api-php-client/src/contrib/apiCalendarService.php'; 

$apiClient = new apiClient(); 
$apiClient->setUseObjects(true); 
$service = new apiCalendarService($apiClient); 

if (isset($_SESSION['oauth_access_token'])) {$apiClient->setAccessToken($_SESSION['oauth_access_token']); 
} else { 
    $token = $apiClient->authenticate(); 
    $_SESSION['oauth_access_token'] = $token; 
} 

और मेरी "config.php" फ़ाइल में मैं ("एक्स" के स्थान पर) केवल अपने developper कुंजी जोड़ें:

global $apiConfig; 
$apiConfig = array(
    // True if objects should be returned by the service classes. 
    // False if associative arrays should be returned (default behavior). 
    'use_objects' => false, 

    // The application_name is included in the User-Agent HTTP header. 
    'application_name' => '', 

    // OAuth2 Settings, you can get these keys at https://code.google.com/apis/console 
    'oauth2_client_id' => '', 
    'oauth2_client_secret' => '', 
    'oauth2_redirect_uri' => '',  

    // The developer key, you get this at https://code.google.com/apis/console 
    'developer_key' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 

    // OAuth1 Settings. 
    // If you're using the apiOAuth auth class, it will use these values for the oauth consumer key and secret. 
    // See http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html for info on how to obtain those 
    'oauth_consumer_key' => 'anonymous', 
    'oauth_consumer_secret' => 'anonymous', 

लेकिन फिर मुझे त्रुटियां मिलती हैं और यह मुझे बताती है कि यह "ओएथ 2.0" सिस्टम का उपयोग करके प्रमाणित करने का प्रयास कर रहा है जिसे मैं उपयोग नहीं करना चाहता हूं। मैं केवल एक एपीआई कुंजी के साथ एक कैलेंडर तक पहुंच बनाना चाहता हूं।

और आश्चर्यजनक रूप से, जब मैं Google "सरल एपीआई एक्सेस कुंजी" में खोज करता हूं तो मुझे कुछ भी नहीं मिलता है, उनके दस्तावेज़ों पर कुछ भी नहीं, कोई उदाहरण नहीं, कोई ट्यूटोरियल नहीं, कुछ भी नहीं। क्या मैं इस चीज़ का उपयोग कर अकेला हूं?

तो क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं?

+1

वही यहाँ ...... क्या आप कहीं भी जाने का प्रबंधन करते थे? – zaf

+0

वही ... कोई अपडेट? – redronin

+0

जिज्ञासा से - क्या आपने "सरल API एक्सेस" संवाद के तहत अनुमत आईपी पते की सूची में अपना सर्वर का आईपी जोड़ा था? – gfppaste

उत्तर

1

Simple API Access key नामक ऐसी कोई चीज़ नहीं है।

सामान्य रूप से OAuth 2.0 प्राधिकरण के लिए उपयोग किया जाता है। लेकिन चूंकि आपके पास इसका उपयोग नहीं करने का आपका कारण है।

  • यदि आप प्राधिकरण के लिए OAuth1.0 का उपयोग करना चाहते हैं। आपको पृष्ठ पर Simple API Access अनुभाग में API key की आवश्यकता है।
  • यदि आप OAuth के बजाय उपयोगकर्ता नाम & पासवर्ड लॉगिन का उपयोग करना चाहते हैं, तो आप ClientLogin देख सकते हैं, लेकिन इसकी अनुशंसा नहीं की जाती है।
+1

आप कहते हैं कि ऐसी कोई चीज़ नहीं है, लेकिन फिर "सरल एपीआई एक्सेस सेक्शन में एपीआई कुंजी प्राप्त करें" कहें? – Kevin

+0

एक्सेस करने के लिए बस "एपीआई कुंजी" का उपयोग करें। "सरल एपीआई एक्सेस कुंजी" नामक कोई भी कुंजी नहीं है। – Rannnn

+0

क्या आपने जांच की है कि एपीआई कुंजी वास्तव में आवश्यक है या नहीं? मुझे लगता है कि https://developers.google.com/google-apps/calendar/auth में जानकारी https://developers.google.com/accounts/docs/OAuth के साथ संघर्ष करती है, और मैं बिना कैलेंडर API v3 क्वेरी करने में सक्षम था एपीआई कुंजी बिल्कुल, उपभोक्ता कुंजी और गुप्त (OAuth1) – prusswan

-1

नीचे दिए गए लिंक को देखें जो आपके लिए उपयोगी है। Google API क्लाइंट लाइब्रेरी आपको अपनी पसंद की भाषा में, आपके सर्वर पर Analytics, ऐडसेंस, Google+, कैलेंडर, मॉडरेटर, कार्य, या अक्षांश जैसे Google API के साथ काम करने में सक्षम बनाता है।

http://code.google.com/p/google-api-php-client/

धन्यवाद, चिंटू

+0

यह प्रश्न का उत्तर नहीं देता है।Google एपीआई क्लाइंट लाइब्रेरी सरल एकीकरण के लिए एक दुःस्वप्न है, एक साधारण हुक के लिए लाइब्रेरी के 3 एमबी ... –

5

(मुझे पता है यह एक पुराने सवाल है, लेकिन मैं खुश किया गया है होगा अगर किसी को कोई वास्तविक जवाब यहाँ दे दी है तो मैं अब यह कर रहा हूँ)


मैं एक ही समस्या पर आया, सरल एपीआई एक्सेस अच्छी तरह से प्रलेखित नहीं है (या शायद मैंने जहां खोजा नहीं है), लेकिन Google API Explorer का उपयोग करके मुझे जो चाहिए वह प्राप्त करने का एक तरीका मिला, जिसमें है तथ्य बहुत सरल है। आपको विशिष्ट lib या कुछ भी चाहिए: यह वास्तव में वास्तव में सरल है।

मेरे मामले में मैं बस G + पर एक कीवर्ड खोज करने के लिए की जरूरत है, तो मैं सिर्फ एक GET अनुरोध करना था: एक कैलेंडर एक्सेस (see here) के लिए अब

https://www.googleapis.com/plus/v1/activities?query={KEYWORD}&key={YOUR_API_KEY} 

,, के नाटक हम लाने के लिए चाहते हैं अभिगम नियंत्रण नियम सूची।हम calendar.acl.list जो हमें यूआरआई देने का उल्लेख करने की जरूरत है: रिक्त स्थान को

https://www.googleapis.com/calendar/v3/calendars/{CALENDAR_ID}/acl?key={YOUR_API_KEY} 

भरें, और कहा कि काफी तुम सब करने की जरूरत है। server key (एपीआई एक्सेस सबमेनू) प्राप्त करें, इसे अपने प्रोजेक्ट में कहीं भी स्टोर करें और इसे यूआरआई के भीतर कॉल करें जिसका आप अनुरोध कर रहे हैं।

+0

और जो आश्चर्य करते हैं, उनके लिए सरल एक्सेस डिफ़ॉल्ट बाल्टी के नीचे आता है, साइन-इन नहीं, जिसका मतलब है कि आप सीमित हैं प्रति दिन 10k अनुरोध करने के लिए। – Tsadiq

+6

मैं इसे काम नहीं कर सकता। मैं मिल '{ " त्रुटि ": { " त्रुटियों ": [ { " डोमेन ":" वैश्विक ", " कारण ":" आवश्यक ", " message ":" लॉगिन आवश्यक ", " locationType " : "शीर्षक", "स्थान": "प्राधिकरण" } ], "कोड": 401, "message": "लॉगिन आवश्यक" } } ' अगर मैं इस लॉगिन आवश्यक का समाधान कर सकता है। मेरे पास एपीआई कुंजी है, मैं अधिकृत आईपी से एक्सेस कर रहा हूं। – AndreaBogazzi

3

आप एपीआई कुंजी का उपयोग करके अपनी कैलेंडर जानकारी तक नहीं पहुंच सकते हैं। एपीआई कुंजी (या सरल एपीआई एसेस कुंजी) अधिकृत टोकन नहीं हैं और केवल कुछ एपीआई कॉल जैसे Google खोज क्वेरी आदि के लिए उपयोग की जा सकती हैं; एपीआई कुंजी आपको किसी भी उपयोगकर्ता विशिष्ट डेटा तक पहुंचने नहीं देगी, जो मुझे लगता है कि इस कैलेंडर एप्लिकेशन के माध्यम से आपका उद्देश्य है।

इसके अलावा, मैं आपके कोड में जो देखता हूं, उससे आप क्लाइंट ऑब्जेक्ट बना रहे हैं जो OAuth 2.0 प्रमाणीकरण का उपयोग करने जा रहा है और इसलिए आपको प्रमाणीकरण त्रुटि संदेश मिल रहे हैं।

0

आज भी ऐसा करने की कोशिश करते समय मुझे यह धागा मिला। यद्यपि यह देर हो चुकी है, लेकिन जवाब हां है, वास्तव में उन एपीआईएस के लिए सरल एपीआई कुंजी है जिन्हें उपयोगकर्ता प्राधिकरणों की आवश्यकता नहीं है, और आधिकारिक क्लाइंट लाइब्रेरी इसका समर्थन करती है।

एपीआई पुस्तकालय विकल्प द्वारा ऐसा करता है, जो कुंजी, मूल्य जोड़ी है।

एक दिया यूट्यूब वीडियो के बारे में जानकारी प्राप्त का उदाहरण लें, तो आप इस एपीआई का प्रयोग करेंगे: https://godoc.org/google.golang.org/api/youtube/v3#VideosListCall.Do

api कुंजी का उपयोग करने के लिए बस एक प्रकार है कि CallOption इंटरफ़ेस लागू करता है बनाने के लिए और इसे वापस api कुंजी करते हैं:

type APIKey struct { 
} 

func (k *APIKey) Get() (string, string) { 
    return "key", "YOU API KEY HERE" 
} 

फिर जब एपीआई बुला, यह करने के लिए APIKey की आपूर्ति:

youtube, err := youtube.New(&http.Client{}) 
call := youtube.Videos.List("snippet,contentDetails,statistics").Id(id) 
rsp, err := call.Do(opt) 

इस तरह, आप यूट्यूब ग्राहक बुद्धि का निर्माण कर सकते एच ओथ क्लाइंट की बजाय vallina http क्लाइंट, और सरल एपीआई कुंजी का आनंद लें।

पहले जवाब में कहा गया है कि आप सीधे http GET का उपयोग कर सकते हैं, लेकिन फिर आपको त्रुटियों को संभालने और परिणाम को स्वयं पार्स करने की आवश्यकता होगी।

+0

संपादित करें: मूल प्रश्न php के लिए है, लेकिन उत्तर सभी ग्राहकों पर लागू होना चाहिए, यह एपीआई का एक ही सेट है। – fluter