2014-12-03 115 views
0

自从他们在11月关闭服务后,我正在将我的谷歌日历访问权限从Zend迁移到新的Google API。我的网络应用程序使用谷歌API来创建一些事件。未捕获的异常'Google_Auth_Exception'带有'I​​nvalid code'消息

我面临一个反复出现的消息,我无法解析:未捕获的异常“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); 

有人能帮助我吗?

+0

检查此链接http://stackoverflow.com/questions/26983039/zend-gdata-not-working-with-google-calendar-api其中有关于Zend的迁移细节步骤将Google日历API第3版。 – SGC 2014-12-03 18:47:16

回答

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 = "[email protected]"; 
    // 
    $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(); 
    }  

?> 
相关问题