当前位置: 首页 > 知识库问答 >
问题:

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

董霖
2023-03-14

我只是想制作一个小而简单的应用程序(两年前我已经在Objective-C和api V1中制作了这个应用程序),它显示一个屏幕,上面有事件时间和描述,还有一个按钮:“在日历中插入事件”。显然,每个用户都必须用自己的谷歌用户名和密码配置应用程序。该应用程序使用第一个可用日历简化了一些过程

我在尝试使用javascript时遇到了无限的问题(这个应用程序将用html5制作),所以,看看文档,我最终尝试在我的服务器上用php5制作一个后端(我想这可能会更容易……哦哦哦哦哦哦哦)。

因此,我在这里阅读文档:https://developers.google.com/google-apps/calendar/我所做的:1)访问Google开发者控制台。创建了一个项目。

OAuth 2.0

客户端ID 352xxxyy9。应用程序。googleusercontent。通用域名格式

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

服务帐户

客户端ID 3523xxxyy419-vpfgdfg9u77s0。应用程序。googleusercontent。通用域名格式

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

公钥指纹:ac15ddfxdffrtg5565fgfg545r

2)我在我的服务器中安装了适用于PHP(beta)的Google API客户端库。

医生说:

使用Google API Client Library for PHP需要下载PHP源代码。将来将提供软件包。有关更多详细信息,请参阅项目页面。

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

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

然后

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

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

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

4) “配置您的应用程序”您必须实例化客户端才能向API发出请求。所有对Google日历API的请求都需要授权。

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

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

转到Google开发者控制台。选择一个项目。在左侧的侧栏中,选择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'),
    )
);

但是它们和我的钥匙不一样,怎么了????

什么是客户机密?重定向\u url??

请帮忙。

共有3个答案

严亦
2023-03-14

我也有同样的问题。在此页面上,当您单击“创建新客户机Id”时,选择“Web应用程序”,它还应为您提供客户机密钥。

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

希望有帮助

葛高澹
2023-03-14

先到这里https://console.developers.google.com/project这就是您配置应用程序的地方。。。

单击您的项目,然后在左侧您将看到API

完成后,您将在相应的client\u id、secret、redirect等中输入这些内容。

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

越福
2023-03-14

我认为您需要设置服务帐户访问权限,如下所述: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时工作。

 类似资料:
  • 我运行下面的脚本时出错,我不知道如何更正它。本质上,我在mysql中有一个名为gamestbl的表。我希望用户输入一些关于游戏名称或游戏描述的关键词,然后php将正确的游戏显示为下拉列表(理想情况下)甚至信息表。 错误显示: 警告:mysqli_query()至少需要2个参数,其中1个参数在第29行的C:\xampp\htdocs\introductiongphp\Email.php中给出 警告:

  • 问题内容: 我正在尝试使用JavaScript计算两次之间的差异。这只是基本的数学运算,但是在使用and 时,我似乎对此有一些疑问。 如果您想知道为什么要将功能应用于日期,那是因为我使用本地存储在客户端存储一些数据,并在客户端再次访问我的网站时使用它(这种方式比发出更多请求要快)到服务器)。该数据通常会不时更新一次(我是通过另一个网站的API获取数据),因此我设置了一个变量,并将其与其他数据一起存

  • 我在MySQL中有一个表。此表的名称为。问题存储在这个表中。向用户随机显示一个问题。这个问题不应重复。因此用户ID存储在名为的列中。我有一些问题: 第一,问题显示多次而不是一次。 第二,字段更新不能正常工作。例如,如果用户ID是40,并且必须添加到字段中一次,则会添加三次。 请审查我的代码,并帮助我解决它的问题。 我的桌子: 注意:用户ID不应重复存储在列中。 我的代码:

  • 问题内容: 我在使用Hibernate和SQL Server 2008时遇到问题。当我尝试将对象保存到数据库时,Hibernate抛出此错误: 用户在数据库中具有选择,插入,更新特权。所以我排除了这个问题。 这是生成的SQL: 如果我在SQL Server中运行上述SQL,它说无效的对象名称emanagement.patient_visit,但是如果我手动添加该“ dbo” emanagement

  • 但现在,有些服务会变成空的。是否有方法在@Runwith注释中同时使用SpringJunit4ClassRunner.class和PowerMockRunner.class

  • 我在一个项目中工作,它需要服务的研究论文和文件,所以在服务文件时,它需要检查一些通行证,如果一切看起来都很好,那么它应该转发文件(研究论文)。 读取文件并使用PHP进行流式处理很容易,但我们需要使用apache来提供文件。 应用程序的工作方式不同,但是我做了一个像这样的小项目,这样我们可以重新产生问题。 所有请求都指向一个IP地址,并使用文件将请求重定向到文件。 以下是htaccess文件: 在中