ユーザーが名前とパスワードを入力しなくても、ユーザーを Google カレンダーにログインさせようとしています。私は OATH を正常にセットアップしました。これにより、PHP スクリプトからカレンダーを操作できます。しかし、私がしなければならないことは、スクリプトを実行して、ユーザーがクリックしてアクセスできるリンクを何らかの方法で作成することです。
以下のサンプル php コードのステップ 1 からステップ 5 を参照してください。これは基本的に、カレンダー サンプルの simple.php コードです。
ワークフローを誤解しているかもしれませんが、これです。1) 認証 URL を作成する 2) コードを取得し、トークンでコールバックする 3) トークンを設定する 4) このトークンを使用してカレンダーにアクセスする 5) トークンを使用してカレンダーにアクセスできるようにする -- これは、うまくいかない
/サンプル PHP コード** * ** * **** /
require_once '../phplibs/gApi/Google_Client.php';
require_once '../phplibs/gApi/contrib/Google_CalendarService.php';
session_start();
$client = new Google_Client();
$client->setApplicationName("Google Calendar PHP Starter Application");
$client->setClientId('xxxxxxxxxxxxxxxxxxxxxx');
$client->setClientSecret('xxxxxxxxxxxxxxxxxxxxxxx');
$client->setRedirectUri(xxxxxxxxxxxxxxxxxxxxxxxxxx'); // The redirect is this same script
$client->setDeveloperKey('xxxxxxxxxxxxxxxxx');
$cal = new Google_CalendarService($client);
if (isset($_GET['logout'])) {
unset($_SESSION['token']);
}
if (isset($_GET['code'])) {
//Step 2
//I have been called back with the code
// so use this to create a token
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
if (isset($_SESSION['token'])) {
// Step 3
// I have been called back by the redirect in step 2
// but now with an access token
$client->setAccessToken($_SESSION['token']);
}
if ($client->getAccessToken()) {
//Step 4
// My token exists so now I can work on the users calanders
// I dont want to do this but it does work so proves the auth worked ok
$calList = $cal->calendarList->listCalendarList();
//print "<h1>Calendar List</h1><pre>" . print_r($calList, true) . "</pre>";
//Not sure why this happens again as we have a token
$_SESSION['token'] = $client->getAccessToken();
// Step 5
// This is really want I want to do, I want to open the users calendar in a iframe or full page
// However if the user is not logged in they get redirected to the Google login page
// I was expecting that as the token was set this should work.
header('Location: https://www.google.com/calendar/render');
// echo(' <iframe src="https://www.google.com/calendar/embed?src=calendar%40wokingham-theatre.org.uk&ctz=Europe/London" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>');
} else {
//Step 1
$authUrl = $client->createAuthUrl();
print "<a class='login' href='$authUrl'> Connect to the Google calendar without me having to enter my name and password </a>";