如何使用 Google 的“Simple API Access Key”来访问 Google 日历信息 (PHP)?

2022-08-30 23:44:21

我正在尝试使用Google API v3访问一个Google日历,并根据此处的文档:http://code.google.com/apis/calendar/v3/using.html#intro 和此处:https://code.google.com/apis/console/,我需要的解决方案是“简单的API访问”和“服务器应用程序的密钥(具有IP锁定)”。

现在,当我用这个代码创建一个页面时:

session_start();

require_once 'fnc/google-api-php-client/src/apiClient.php';
require_once 'fnc/google-api-php-client/src/contrib/apiCalendarService.php';

$apiClient = new apiClient();
$apiClient->setUseObjects(true);
$service = new apiCalendarService($apiClient);

if (isset($_SESSION['oauth_access_token'])) {$apiClient->setAccessToken($_SESSION['oauth_access_token']);
} else {
    $token = $apiClient->authenticate();
    $_SESSION['oauth_access_token'] = $token;
}

在我的“config.php”文件中,我只添加了我的开发密钥(代替“X”):

global $apiConfig;
$apiConfig = array(
    // True if objects should be returned by the service classes.
    // False if associative arrays should be returned (default behavior).
    'use_objects' => false,

    // The application_name is included in the User-Agent HTTP header.
    'application_name' => '',

    // OAuth2 Settings, you can get these keys at https://code.google.com/apis/console
    'oauth2_client_id' => '',
    'oauth2_client_secret' => '',
    'oauth2_redirect_uri' => '',    

    // The developer key, you get this at https://code.google.com/apis/console
    'developer_key' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX',

    // OAuth1 Settings.
    // If you're using the apiOAuth auth class, it will use these values for the oauth consumer key and secret.
    // See http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html for info on how to obtain those
    'oauth_consumer_key'    => 'anonymous',
    'oauth_consumer_secret' => 'anonymous',

但后来我收到错误,它告诉我它正在尝试使用我不想使用的“OAuth 2.0”系统进行身份验证。我只想使用 API 密钥访问一个日历。

令人惊讶的是,当我在谷歌中搜索“简单API访问密钥”时,我什么也没找到,他们的文档上什么都没有,没有例子,没有教程,什么都没有。我是唯一一个使用这个东西的人吗?

那么有人能告诉我我做错了什么吗?


答案 1

(我知道这是一个老问题,但如果有人在这里给出一个真正的答案,我会很高兴,所以我现在正在这样做)


我遇到了同样的问题,简单的API访问没有很好的文档记录(或者可能只是不是我搜索的地方),但是使用Google API Explorer,我找到了一种方法来获取我需要的东西,这实际上非常简单。你不需要特定的lib或任何东西:它实际上非常简单。

在我的情况下,我只需要在G +上搜索关键字,所以我只需要做一个GET请求:

https://www.googleapis.com/plus/v1/activities?query={KEYWORD}&key={YOUR_API_KEY}

现在,对于日历访问权限(请参阅此处),让我们假设我们要获取访问控制规则列表。我们需要参考 calendar.acl.list,它为我们提供了 URI:

https://www.googleapis.com/calendar/v3/calendars/{CALENDAR_ID}/acl?key={YOUR_API_KEY}

填写空白,这几乎就是您需要做的所有事情。获取服务器密钥(API Access 子菜单),将其存储在项目中的某个位置,并在请求的 URI 中调用它。


答案 2

您无法使用 API 密钥访问日历信息。API密钥(或简单的API访问密钥)不是授权令牌,只能用于某些API调用,例如Google搜索查询等;API密钥不会让您访问任何用户特定的数据,我假设这是您通过此日历应用程序实现的目标。

另外,根据我在代码中看到的内容,您正在创建一个将使用OAuth 2.0身份验证的客户端对象,因此您会收到身份验证错误消息。


推荐