带有“无效代码”消息的未捕获异常“Google_Auth_Exception”

时间:2014-12-03 08:15:34

标签: php google-calendar-api

我要将我的Google日历访问权限从Zend迁移到新的google API,因为他们已于11月关闭了该服务。我的网络应用使用谷歌API来创建一些活动。

我正面临一条无法解决的定期消息:未捕获的异常“Google_Auth_Exception”,消息“无效代码”

这是我的代码:

define('STDIN',fopen("php://stdin","r"));
require_once '../../utils/google-api-php-client-master/autoload.php';

    /**********************
    OAUTH 2.0 AUTHORIZATION
    ***********************/


    $client = new Google_Client();

    // OAuth2 client ID and secret can be found in the Google Developers Console.
    $client->setClientId('XXXXXX);
    $client->setClientSecret('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
    $client->setRedirectUri('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
    $client->addScope('https://www.googleapis.com/auth/calendar');

    $service = new Google_Service_Calendar($client);

    $authUrl = $client->createAuthUrl();


    //Request authorization
    print "Please visit:\n$authUrl\n\n";
    print "Please enter the auth code:";
    echo(trim(fgets(STDIN)));
    $authCode = trim(fgets(STDIN));

    // Exchange authorization code for access token
    $accessToken = $client->authenticate($authCode);
    $client->setAccessToken($accessToken); 

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我终于得到了这些东西,开始自己工作和大量的搜索。我之前也在使用Zend。在Daimto.com有一个非常好的网站,你可以看到一堆教程。以下是使用代码形式Daimto.com添加事件并添加用于在正文中添加事件的代码的代码。请记住,您还需要将服务电子邮件添加到Google日历的共享中!

<?php
session_start();        
require_once './google-api-php-client/src/Google/Client.php';
require_once './google-api-php-client/src/Google/Service/Calendar.php';     

$client_id = '6846057_YOUR_CLIENT_ID_HERE_pg3q8r6.apps.googleusercontent.com';
$Email_address = '68460_YOUR_SERVICE_EMAIL_HERE_developer.gserviceaccount.com';  
$key_file_location = '_KEY_FILE_LOCATION_HERE_8.p12';       
$client = new Google_Client();      
$client->setApplicationName("_APP_NAME_HERE_");
$key = file_get_contents($key_file_location);    
// seproate additional scopes with a comma   
$scopes ="https://www.googleapis.com/auth/calendar";    
$cred = new Google_Auth_AssertionCredentials(    
   $Email_address,       
    array($scopes),     
    $key         
    );      
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {        
    $client->getAuth()->refreshTokenWithAssertion($cred);       
}       
$service = new Google_Service_Calendar($client);    

?>

<html><body>

<?php
    //$service = new Google_Service_Calendar($client);
    //
    $event = new Google_Service_Calendar_Event();
    $event->setSummary('Event 2');
    $event->setLocation('Somewhere');
    $start = new Google_Service_Calendar_EventDateTime();
    $start->setDateTime('2015-06-22T19:00:00.000+01:00');
    $start->setTimeZone('Europe/London');
    $event->setStart($start);
    $end = new Google_Service_Calendar_EventDateTime();
    $end->setDateTime('2015-06-22T19:25:00.000+01:00');
    $end->setTimeZone('Europe/London');
    $event->setEnd($end);
    //
     $calendar_id = "nm_GOOGLE_CAL_ID_HERE_@group.calendar.google.com";
    //
    $new_event = null;
    //
    try {
        $new_event = $service->events->insert($calendar_id, $event);
        //
        $new_event_id= $new_event->getId();
    } catch (Google_ServiceException $e) {
        syslog(LOG_ERR, $e->getMessage());
    }
    //
    $event = $service->events->get($calendar_id, $new_event->getId());
    //
    if ($event != null) {
        echo "Inserted:";
        echo "EventID=".$event->getId();
        echo "Summary=".$event->getSummary();
        echo "Status=".$event->getStatus();
    }    

?>