PHP और सेवा खाते के साथ Google कैलेंडर ईवेंट बनाएं - समस्या प्रमाणित करें

सेवा-खाता-विधि का उपयोग करते समय Google कैलेंडर सेवा तक पहुंच बनाना संभव है? Google अप्रत्यक्ष रूप से कहता है, यह संभव नहीं है, क्योंकि सेवा-सेवा-विधि के दस्तावेज़ में समर्थित सेवाओं की सूची में कैलेंडर-सेवा नहीं है, लेकिन मैं व्यक्तिगत रूप से सोचता हूं, यह संभव है। पर कैसे?

मैं PHP में कैलेंडर एप्लिकेशन लिख रहा हूं, और वहां मैं अपने Google कैलेंडर में कैलेंडर-ईवेंट को उपयोगकर्ता-क्रिया (उदा। लॉगिन) के बिना बनाना चाहता हूं।

मैंने सीखा, कि पहले एप्लिकेशन को एक कुंजी-फ़ाइल के साथ सेवा-खाता-विधि का उपयोग करके, Google सर्वर के खिलाफ स्वयं प्रमाणित करना होगा .p12

मैं प्रमाणीकरण के लिए निम्नलिखित कोड का उपयोग कर रहा हूँ: (यहां डाउनलोड किया गया फ़ॉम: http://code.google.com/p/google-api-php-client/source/browse/trunk/examples/prediction/serviceAccount.php )

session_start();
require_once 'google-api/src/Google_Client.php';
require_once 'google-api/src/contrib/Google_CalendarService.php';
require_once 'google-api/src/contrib/Google_PredictionService.php';


$client = new Google_Client();
$client->setApplicationName(GOOGLE_APPLICATION_NAME);
$client->setClientId(GOOGLE_CLIENT_ID);

$keyfile = file_get_contents(GOOGLE_KEY_FILE);

$client->setAssertionCredentials(new Google_AssertionCredentials(
  GOOGLE_SERVICE_ACCOUNT_NAME,
  array('https://www.googleapis.com/auth/prediction'),
  $keyfile)
);

लेकिन यह लॉगिन काम नहीं करता है। अगर मैं उस पल में सर्वर लॉग इन करता हूं, तो मैं कैसे पता लगा सकता हूं?

मैं इसके साथ जारी रखना चाहता हूं:

$cal = new Google_CalendarService($client);
if (isset($_SESSION['token'])) {
  $client->setAccessToken($_SESSION['token']);
}
if ($client->getAccessToken()) {
  $calList = $cal->calendarList->listCalendarList(); //<- this is line 55
  print "

Calendar List

" . print_r($calList, true) . "
"; $_SESSION['token'] = $client->getAccessToken(); } else { $authUrl = $client->createAuthUrl(); print ""; }

लेकिन लाइन 55 में यह त्रुटि आती है:

Fatal error: Uncaught exception 'Google_ServiceException' with message 'Error calling GET https://www.googleapis.com/calendar/v3/users/me/calendarList: (403) Insufficient Permission' in /usr/www/users/leuchtk/html/google-api/src/io/Google_REST.php:66

Stack trace: #0 /usr/www/users/leuchtk/html/google-api/src/io/Google_REST.php(36): Google_REST::decodeHttpResponse(Object(Google_HttpRequest)) #1 /usr/www/users/leuchtk/html/google-api/src/service/Google_ServiceResource.php(186): Google_REST::execute(Object(Google_HttpRequest)) #2 /usr/www/users/leuchtk/html/google-api/src/contrib/Google_CalendarService.php(205): Google_ServiceResource->__call('list', Array) #3 /usr/www/users/leuchtk/html/i_termine_admin.php(55): Google_CalendarListServiceResource->listCalendarList() #4 /usr/www/users/leuchtk/html/termine_admin.php(113): include('/usr/www/users/...') #5 {main} thrown in /usr/www/users/leuchtk/html/google-api/src/io/Google_REST.php on line 66

तो ऐसा लगता है, एप्लिकेशन लॉग इन नहीं है। मैं अभी इस कोड में पूरी तरह से खो गया हूँ। कुछ छोटी रोशनी के लिए धन्यवाद, वहां क्या गुम है ...

मार्को

0

1 उत्तर

आप इस प्रश्न का उल्लेख करना चाह सकते हैं। आपकी समस्या सिर्फ जोड़ने के लिए हो सकती है

array('https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly'),

जहां आप कॉल करते हैं

$client->setAssertionCredentials();

Google PHP क्लाइंट API: अपर्याप्त अनुमति

उम्मीद है की यह मदद करेगा

0
जोड़ा