私は自分のアプリケーションとGoogleカレンダーを正常に統合します。 初めて、私は正常に認証され、すべてのイベントが正しくGoogleカレンダーに作成されます。トークンのみを使用してGoogleカレンダーにログイン
もう一度認証したくない場合は、ボタンをクリックして、アプリケーションのすべての新しいイベントをGoogleカレンダーに作成する必要があります。
私はそれがリフレッシュトークンによって行われると思います。 私はトークンを受け取った。 そのための私の下のコードを見てください。
<?php
session_start();
require_once('vendor/google/apiclient/src/Google/autoload.php');
require_once 'vendor/google/apiclient/src/Google/Client.php';
require_once 'vendor/google/apiclient/src/Google/Service/Calendar.php';
$scopes ="https://www.googleapis.com/auth/calendar.readonly";
$client_id = '';
$Email_address = '';
$key_file_location = '';
$client_secret = "";
$redirect_uri = "";
$key = file_get_contents($key_file_location);
$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->setAccessType('offline'); // Gets us our refreshtoken
$client->setScopes(array('https://www.googleapis.com/auth/calendar.readonly'));
$cred = new Google_Auth_AssertionCredentials(
$Email_address,
array($scopes),
$key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
$_SESSION['token'] = $client->getAccessToken();
$client->setAccessToken($_SESSION['token']);
}
echo "Token".$_SESSION['token'];
if ($client->getAccessToken()) {
$service = new Google_Service_Calendar($client);
$events = $service->events->listEvents('primary');
while(true) {
foreach ($events->getItems() as $event) {
echo $event->getSummary() . " ==> ";
echo $event->end->dateTime;
echo "<br>";
}
$pageToken = $events->getNextPageToken();
if ($pageToken) {
$optParams = array('pageToken' => $pageToken);
$events = $service->events->listEvents('primary', $optParams);
} else {
break;
}
}
}
?>
ここでトークンを取得しましたが、今では認証を何度も何度もやり直すことなくGoogleカレンダーにログインしたいと考えています。私は初めてそれをしたので。
今、トークンを使用してGoogleアカウントにログインできますか? 「はい」の場合、どうすればいいですか?
初めて私はユーザーを認証します。ここには自分のコードがあります。
<?php
session_start();
$client = new Google_Client();
$client->setApplicationName("ABC-APP");
$client->setClientId("");
$client->setClientSecret('');
$client->setRedirectUri('');
$client->setScopes(array(
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/calendar.readonly',
));
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}
}
if ($client->getAccessToken()) {
$service = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event(array(
'summary' => "Myevent",
'location' => "31 Shuijd",
'description' => "Test Descriptionj",
'start' => array(
'dateTime' => "12/1/2016",
'timeZone' => "Asia/Kolkata",
),
'end' => array(
'dateTime' => "12/2/2016",
'timeZone' => "Asia/Kolkata",
),
'recurrence' => array(
'RRULE:FREQ=DAILY;COUNT=2'
),
'attendees' => array(
array('email' => $row['contact_email']),
),
'reminders' => array(
'useDefault' => FALSE,
'overrides' => array(
array('method' => 'email', 'minutes' => 24 * 60),
array('method' => 'popup', 'minutes' => 10),
),
),
));
$event = $service->events->insert("primary", $event);
}
?>
トークンを初めて取得しました。あなたが2度目に従った手順と同じです。そのトークンを試してイベントを追加してください。テストされていませんが動作するはずです。 –