我正在尝试使用来自php的API将事件发送到谷歌日历。但总有一些错误。无法理解下一步该做什么。这是我的代码:
致命错误:未捕获的异常'Google_ServiceException',消息'错误调用POST https://www.googleapis.com/calendar/v3/calendars/some_calendar@gmail.com/events?key= {我在这里} :( 401)需要登录'/ home / abcd / public_html / mouthworks / gplus-verifytoken-php- master / google-api-php-client / src / io / Google_REST.php:66堆栈跟踪:#0 / home / abcd / public_html / mouthworks / gplus-verifytoken-php-master / google-api-php-client / src /io/Google_REST.php(36):Google_REST :: decodeHttpResponse(对象(Google_HttpRequest))#1 / home / abcd / public_html / mouthworks / gplus-verifytoken-php-master / google-api-php-client / src / service /Google_ServiceResource.php(186):Google_REST :: execute(Object(Google_HttpRequest))#2 / home / abcd / public_html / mouthworks / gplus-verifytoken-php-master / google-api-php-client / src / contrib / Google_CalendarService .php(494):Google_ServiceResource-> __ call('insert',Array)#3 /home/abcd/public_html/mouthworks/test.php(24):Google_EventsServiceResource-> insert('some_calendar @ g ...' ,对象(/ home / abcd / public_html / mouthworks / gplus-verifytoken-php-maste中的Google_Even第66行的/ google-api-php-client / src / io / Google_REST.php
UIView *vw = [[UIView alloc] initWithFrame:yourFrame];
UILabel *lbl = [[UILabel alloc] initWithFrame:lblFrame];
UIImageView *imgView = [[UIImageView alloc] initWithFrame:imgFrame];
[vw addSubView:lbl];
[vw addSubView:imgView];
self.navigationItem.titleView = vw;
答案 0 :(得分:0)
我在这里注意的第一件事是你没有验证你的API调用,这就是你得到错误(401)需要登录的原因。您必须首先验证用户是否可以访问用户数据。请参阅此处的文档https://developers.google.com/api-client-library/php/auth/web-app。用户成功通过身份验证后,您可以进行API调用。我注意到的第二件事是您将电子邮件地址放在日历ID上。如果要访问当前登录用户的主日历,请使用“primary”关键字。您的代码应如下所示:
session_start();
$client = new Google_Client();
$client->setAuthConfig("client_secrets.json");
$client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/event.php');
$client->addScope("https://www.googleapis.com/auth/calendar");
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
$cal = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event(array(
'summary' => 'Pi Day',
'location' => 'Math Classroom',
'description' => 'Pi History in detail',
'start' => array(
'dateTime' => '2016-11-14T10:00:00-05:00'
),
'end' => array(
'dateTime' => '2016-11-14T10:25:00-05:00'
),
'reminders' => array(
'useDefault' => FALSE,
'overrides' => array(
array('method' => 'email', 'minutes' => 24 * 60),
array('method' => 'popup', 'minutes' => 10),
),
),
));
$calendarId = 'primary';
$event = $cal->events->insert($calendarId, $event);
printf('Event created: %s\n', $event->htmlLink);
} else {
if (!isset($_GET['code'])) {
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/event.php';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
}
我希望您觉得此信息有用。我还建议您阅读https://developers.google.com/google-apps/calendar/v3/reference/events/insert
中的参考文档