使用Google Calendar Api V3和PHP时出现问题

时间:2014-03-21 20:37:17

标签: api calendar google-calendar-api

我只是想制作一个简单的小应用程序(我已经在两年前在带有api V1的Objective-C中制作),它提供了一个包含事件和描述时间的屏幕以及一个按钮:&#34 ;在您的日历中插入事件"。 显然,每个用户都使用他的谷歌用户名和密码配置应用程序。 该应用程序使用第一个可用日历简化了某些过程。

我尝试使用javascript(这个应用程序将在html5中制作)时遇到了无限的问题,因此,在查看文档时,我最终尝试在php5中的服务器上制作一个后端(认为它可能更容易... ohohoho)。

所以,我从这里阅读文档:https://developers.google.com/google-apps/calendar/ 我做了什么 : 1) 访问Google Developers Console。 创建了一个项目。

我现在有了这个(不是真正的键):

OAuth 2.0

客户ID 352xxxyy9.apps.googleusercontent.com

电子邮件地址3527xxxy@developer.gserviceaccount.com

服务帐户

客户ID 3523xxxyy419-vpfgdfg9u77s0.apps.googleusercontent.com

电邮地址35ssss9-zzzzsnhavna78ea0b9gvn6a9u77s0@developer.gserviceaccount.com

公钥指纹:ac15ddfxdffrtg5565fgfg545r


2) 我在我的服务器上安装了用于PHP(测试版)的Google API客户端库。

doc说:

  

使用适用于PHP的Google API客户端库需要您下载PHP源代码。将来会提供包裹。有关详细信息,请参阅项目页面。

运行以下命令下载并安装源:svn blaj blah blah。

我在服务器中复制了整个源代码。容易:)

然后..

3)您现在可以使用以下语句导入所需的类:

require_once "../src/apiClient.php";
require_once "../src/contrib/apiCalendarService.php";

好的,我会将它们插入我的php脚本中!

4)"配置你的应用程序" 您必须实例化客户端以向API发出请求。所有对Google Calendar API的请求都需要授权。

以下代码演示了如何使用OAuth 2.0为本机应用程序配置授权服务对象。有关更多信息,请参阅授权请求。

要查找项目的客户端ID和客户端密钥,请执行以下操作:

转到Google Developers Console。 选择一个项目。 在左侧边栏中,选择API& AUTH。在显示的API列表中,确保将Google Calendar API状态设置为ON。 在左侧的边栏中,选择凭据。 找到标有客户端ID和客户端密钥的行。请注意,可能存在没有客户端密钥的客户端ID,用于Compute Engine和App Engine;在这种情况下,通过选择“创建新客户端ID”来创建新的客户端ID和客户端密钥。

编辑src / config.php文件以放入开发人员API信息。

global $apiConfig;

$apiConfig = array(
    // Site name to show in Google's OAuth authentication screen
    'site_name' => 'www.example.org',

    // OAuth2 Setting, you can get these keys in Google Developers Console
    'oauth2_client_id' => 'YOUR_CLIENT_ID',
    'oauth2_client_secret' => 'YOUR_CLIENT_SECRET',
    'oauth2_redirect_uri' => 'YOUR_REDIRECT_URL',

    // The developer key; you get this from Google Developers Console
    'developer_key' => 'YOUR_DEVELOPER_KEY',
    ...

    // Which Authentication, Storage and HTTP IO classes to use.
    'authClass' => 'apiOAuth2',
    ....

    // Definition of service specific values like scopes, OAuth token URLs, etc
    'services' => array(
        'calendar' => array('scope' => 'https://www.googleapis.com/auth/calendar'),
    )
);

但它们与我所拥有的钥匙不同,有什么不对?

客户机密是什么? REDIRECT_URL ??

请帮忙。

3 个答案:

答案 0 :(得分:1)

我认为您需要设置服务帐户访问权限,如下所述: https://code.google.com/p/google-api-php-client/wiki/OAuth2#Service_Accounts

我很难让它工作,因为我做了很多试验和错误,我的缓存充满了非工作令牌。 如果您发现自己无法在完成所有步骤后仍无法访问日历,请尝试更改此行代码:

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

到此:

$client->setAssertionCredentials(new Google_AssertionCredentials(SERVICE_ACCOUNT_NAME, array('https://www.googleapis.com/auth/prediction'),$key, 'notasecret','http://oauth.net/grant_type/jwt/1.0/bearer',false,false));

最后一个false告诉AssertionCredential类不使用任何缓存。我曾经做过一次然后使用它后来设置为true

答案 1 :(得分:0)

首先到这里https://console.developers.google.com/project,这是您配置应用的地方......

点击你的项目,然后在左侧你会看到API&单击“凭据”,然后单击“凭据”。您需要创建OAuth和公共API访问密钥。

完成后,您将把它们输入相应的client_id,secret,redirect等。

重定向uri与您的应用所在页面相同,是用户在授权后发回的页面。

答案 2 :(得分:0)

我遇到了同样的问题。 在此页面上,当您单击“创建新客户端ID”时,选择“Web应用程序”,它也会为您提供客户端密钥。

https://console.developers.google.com/project 添加项目等。

希望有所帮助