google api calendar php

0

Я знаю, что многие подобные вопросы были заданы, но я изо всех сил пытаюсь понять. Я успешно использовал библиотеки php google для v3 для взаимодействия с функциями календаря. Код, который у меня есть:

<?php 

require_once "google-api-php-client/autoload.php";
session_start();

$client = new Google_Client();
$client->setApplicationName("My app");
$client->setClientId("CI.apps.googleusercontent.com");
$client->SetClientSecret("SECRET");
$client->setRedirectUri("redirect"); 
$client->setDeveloperKey("key");
$client->setScopes(array("https://www.googleapis.com/auth/calendar"));

if (isset($_REQUEST['logout'])) {
  unset($_SESSION['access_token']);
}


if (isset($_GET['code'])) {
  $client->authenticate($_GET['code']);
  $_SESSION['access_token'] = $client->getAccessToken();
  $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
  header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}


if (isset($_SESSION['token'])) {
   $client->setAccessToken($_SESSION['token']);//update token
  }

$service=new Google_Service_Calendar($client);  
...
?>

Это работает нормально, но календарь, который я хочу изменить, всегда является same-, приложение зарегистрировано в той же учетной записи, что и календарь. Есть ли способ обойти аутентификацию oauth2, чтобы я мог просто настроить записи в календаре, который у меня есть, без необходимости выполнять дополнительный этап аутентификации с перенаправлением? Я использовал Zend для этого, и до недавнего времени он работал нормально, но обновление до версии v3 API и использование oauth2, похожего на это, немного переборщило. Разумеется, я, возможно, неправильно понял - любая помощь совета мне очень помогла бы.

  • 0
    Хорошо - так что я понял это - на всякий случай, если кто-то еще ищет ... (в основном глупость с моей стороны). Если вы хотите, чтобы ваше приложение управляло календарем, вам нужно настроить служебную учетную запись в консоли Google. Затем вам необходимо предоставить доступ к календарю на электронную почту, предоставленную этой учетной записи. Этот код работает:
Теги:
calendar

1 ответ

0

Хорошо - в случае, если кто-либо еще ищет ответ на этот вопрос, я думал, что опубликую свое решение. Я был немного глуп. Если вы хотите аутентифицировать приложение для изменения календаря таким образом, вам нужно создать учетную запись службы на консоли Google, а не в веб-приложении. Затем вам нужно использовать имя учетной записи службы (адрес электронной почты, указанный для идентификатора клиента для учетной записи службы), чтобы позволить скрипту изменять календарь. Сделайте это вручную, перейдя к настройке календаря, который вы хотите изменить. Этот код будет работать нормально.

<?php 
session_start();
require_once "google-api-php-client/autoload.php";

$client_id = ''; //Client ID
$service_account_name = ''; //Email Address
$key_file_location = ''; //key.p12
$client = new Google_Client();
$client->setApplicationName("my app");
$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();?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню