google-api-php-client Client ID と Client secret と Redirect URIs が必要です ( APIs Console ) 今までサンプルコードをそのまま使って来ましたが、よくよく読むと少し胡散臭いので整備しました。 どの API も一様に同じようになっていますが、その中でも Task API は単純で解りやすく、実際のオンラインページと比較しやすいのでおすすめです。 ※ アクセストークンの期限を内部でチェックしている方式で目で見れるようにしました
<?php /* * Copyright 2011 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ include_once "templates/base.php"; session_start(); header( "Content-Type: text/html; Charset=utf-8" ); header( "pragma: no-cache" ); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); header( "Cache-control: no-cache" ); require_once realpath(dirname(__FILE__) . '/../autoload.php'); $client_id = ''; $client_secret = ''; $redirect_uri = 'http://localhost/gapi/examples/idtoken.php'; $client = new Google_Client(); $client->setClientId($client_id); $client->setClientSecret($client_secret); $client->setRedirectUri($redirect_uri); $client->addScope('https://www.googleapis.com/auth/tasks'); /************************************************ ログアウト処理 アクセストークンをクリアして最初の状態に戻す ************************************************/ if (isset($_REQUEST['logout'])) { unset($_SESSION['access_token']); } /************************************************ API からのコールバック つまり、アクセストークンが取得されるところ 取得後、環境をリセットする為に自分自身を呼ぶ ************************************************/ 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)); exit(); } /************************************************ アクセストークンがある場合 但し、期限が切れている場合は再度取得する必要 があるので、認証用の URL を作成する ************************************************/ if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { $client->setAccessToken($_SESSION['access_token']); if ($client->isAccessTokenExpired()) { unset($_SESSION['access_token']); $authUrl = $client->createAuthUrl(); } } /************************************************ アクセストークンが無い場合 認証用の URL を作成する ************************************************/ else { $authUrl = $client->createAuthUrl(); } /************************************************ 目的の処理 ************************************************/ echo pageHeader("目的の処理"); ?> <div class="box" style='width:80%'> <div class="request"> <?php // 接続用リンク if (isset($authUrl)) { echo "<a class='login' href='" . $authUrl . "'>Connect Me!</a>"; } // ログアウト用リンク else { echo "<a class='logout' href='?logout'>Logout</a>"; } if ($client->getAccessToken() && isset($_SESSION['access_token']) && $_SESSION['access_token'] ) { ?> </div> <pre class="data"> <?php // 主処理 $obj = json_decode($_SESSION['access_token']); print_r($obj); print "期限 :" . ($obj->{'created'}+$obj->{'expires_in'}) . "\n"; print "現在 :" . time() . "\n"; print "\n"; $service = new Google_Service_Tasks($client); // タスクリストの一覧 $obj_tasklists = $service->tasklists->listTasklists(); // タスクリストの配列として取得 $tasklists = $obj_tasklists->getItems(); print_r($tasklists); ?> </pre> </div> <?php } ?>
環境をリセットする為と言うのは、コールバック時にはアクセストークンが URL に付加されており、そのままのページではトークンの内容が解ってしまうからです。( $_GET['code'] は URL から取得されるものです ) 関連する記事
|
【Googleの最新記事】
- Google 共有ドライブの容量の上限について
- Google Classroom は無料の G Suite for Education アカウントが必要
- 教室と一対一のフォルダより新しく登録されたフォルダの中にあるZoom動画ファイルを該当するClassroom の コース内の該当するトピックに登録する
- Google Apps Script : 動画を添付して Classroom の指定のトピックへ課題として投稿する
- Google Classroom のテーマ画像のサイズと既存画像をテーマ画像として使用してみた手順
- Google Chrome でスマホのソースコードをごく普通に表示して利用する
- Gmail に 実行可能なファイルの拡張子を持つファイルを格納した zip 書庫は送れません
- Gmail で添付できないファイルをエクスプローラで検索する為の文字列
- jQuery で既存 table より Firebase Database のデータを作成する
- jQuery + Bootstrap(css) + mmenu : Firebase Database 参照と更新サンプル( 新規登録テンプレートより )
- jQuery + Bootstrap(css) + mmenu : Firebase Database 新規登録テンプレート
- jQuery + Bootstrap(css) + mmenu : Firebase ログインテンプレート
- Google ドライブの WEBホスティングが無くなったので、Google の Firebase をとりあえず使う方法
- Google サイト内検索の FORM 要素による設置
- ブラウザの geolocation で Google MAP に現在地を表示。ライブラリでさらに詳細情報。API の geocoder で名称・住所から Google MAP を表示して、ライブラリで..
- Google+ に投稿するテキスト内の文字列を太字(ボールド)にしたりイタリックにしたりする方法
- Google の Plus API を使って Google+ 投稿データを jQuery UI のアコーディオン(accordion)で表示する
- Google の タスク API(ToDoリスト) を使ってタスクリストとタスクのタイトルを jQuery のプラグインでメニュー化する
- GitHub の google-api-php-client( PHP ) を使って、Gmail でメールを送る( 添付ファイル付き )
- GitHub の google-api-php-client( PHP ) を使って、Gmail でメールを送る