为什么尝试提取事件列表总是 return 404 错误?
Why does this attempt to pull a list of events always return a 404 error?
据我所知,以下 应该 有效。它是从示例代码中提取的,并且类似的请求 like this one 得到了很好的解决。是的,范围已经设置;是的,有问题的日历是专门共享的。这是代码——您会注意到此时我只是想让事情正常工作,但错误数据并不是很有用:
error_reporting(E_ALL);
session_start();
require_once 'google_settings.php';
require_once 'google-api-php-client/autoload.php';
$client_id = GA_CLIENT_ID; //Client ID
$service_account_name = GA_SERVICE_EMAIL; //Email Address
$key_file_location = GA_KEY_FILE_LOCATION; //key.p12
if ($client_id == '<YOUR_CLIENT_ID>' || !strlen($service_account_name) || !strlen($key_file_location)) {
echo missingServiceAccountDetailsWarning();
}
try {
$client = new Google_Client();
$client->setApplicationName("Just Testing");
$client->setDeveloperKey(GA_API_KEY);
$service = new Google_Service_Calendar($client);
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/calendar'),
$key
);
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
$optParams = array();
$results = $service->events->listEvents('xyzxyz', $optParams);
echo "<h3>Results Of Call:</h3>\n<pre>";
if (is_array($results)) {
foreach ($results as $item) {
var_dump($item);
echo "\n\n";
}
} else var_dump($results);
echo "\n</pre>";
}
catch (Exception $e) {
echo $e->getMessage();
}
我总是遇到这样的错误(无论我使用哪个测试日历——是的,我已经单独启用了共享):
Error calling GET https://www.googleapis.com/calendar/v3/calendars/xyzxyz?key=<key_appears_here>: (404) Not Found
这应该有效吗?我是不是什么都没看到?
谢谢!
经过进一步挖掘,我发现 this getting started guide. I followed the link in Step 1, part 1;但是日历 API 已经在开发人员控制台中显示为已启用,所以我不确定这有什么作用。 但是,我从未输入过第 1 步第 2 部分中描述的同意屏幕 信息,当我测试我的代码时 那时,无需进一步修改,它就起作用了。
我已将 同意屏幕 信息留空,因为我的应用程序仅使用 Public API 访问权限,但似乎同意屏幕数据 必须输入不管你是否打算使用它。
据我所知,以下 应该 有效。它是从示例代码中提取的,并且类似的请求 like this one 得到了很好的解决。是的,范围已经设置;是的,有问题的日历是专门共享的。这是代码——您会注意到此时我只是想让事情正常工作,但错误数据并不是很有用:
error_reporting(E_ALL);
session_start();
require_once 'google_settings.php';
require_once 'google-api-php-client/autoload.php';
$client_id = GA_CLIENT_ID; //Client ID
$service_account_name = GA_SERVICE_EMAIL; //Email Address
$key_file_location = GA_KEY_FILE_LOCATION; //key.p12
if ($client_id == '<YOUR_CLIENT_ID>' || !strlen($service_account_name) || !strlen($key_file_location)) {
echo missingServiceAccountDetailsWarning();
}
try {
$client = new Google_Client();
$client->setApplicationName("Just Testing");
$client->setDeveloperKey(GA_API_KEY);
$service = new Google_Service_Calendar($client);
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/calendar'),
$key
);
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
$optParams = array();
$results = $service->events->listEvents('xyzxyz', $optParams);
echo "<h3>Results Of Call:</h3>\n<pre>";
if (is_array($results)) {
foreach ($results as $item) {
var_dump($item);
echo "\n\n";
}
} else var_dump($results);
echo "\n</pre>";
}
catch (Exception $e) {
echo $e->getMessage();
}
我总是遇到这样的错误(无论我使用哪个测试日历——是的,我已经单独启用了共享):
Error calling GET https://www.googleapis.com/calendar/v3/calendars/xyzxyz?key=<key_appears_here>: (404) Not Found
这应该有效吗?我是不是什么都没看到?
谢谢!
经过进一步挖掘,我发现 this getting started guide. I followed the link in Step 1, part 1;但是日历 API 已经在开发人员控制台中显示为已启用,所以我不确定这有什么作用。 但是,我从未输入过第 1 步第 2 部分中描述的同意屏幕 信息,当我测试我的代码时 那时,无需进一步修改,它就起作用了。
我已将 同意屏幕 信息留空,因为我的应用程序仅使用 Public API 访问权限,但似乎同意屏幕数据 必须输入不管你是否打算使用它。