2017-04-05 12 views
0

私がやりたいことは、「今日」からn(または最大)までのイベントを取得することだけです。私はそれを把握しようとしているサークルの周りを走っています、それは情報を否定したものか、スウィートがうまくいかないようです。良い解決策のパスは、PHPを使ってイベントの初期リストをCSSの良さとJavaScript配列で生成するので、ユーザーがイベントをクリックしたときに詳細DIVを更新できます。 PHPを使用してGoogleカレンダーAPI v3 PHPとJSON

とサーバに最新のAPIをアップロードし、読み出し専用のアカウントでカレンダープロジェクト、OAuth 2.0のクライアントID、およびAPIキーを持っています。いくつかのチュートリアルで終わりましたが、コマンドラインから生成される './credentials/calendar-api-quickstart.json'が必要なので、困ったことになります。私が使用しなければならないサーバーは共有されているので、コマンドラインへのアクセスはありません(明白な理由のため:))。 https://developers.google.com/google-apps/calendar/quickstart/php情報を使用しました。それは私が行方不明になっている唯一の作品と思われる?

このページGoogle Calendar API v3 hardcoded credentialsの情報を通じて、あまりにもキーを活性化されるが、「invalid_grant」エラーを取得します。私は検索で現れたすべてを試しましたが、何も動かないようです。あなたのサイトにGoogleカレンダーのデータを取得しても、あなたを歩いてくれる最新のチュートリアル(2016-2017)の正確な情報はありますか?プロジェクトの設定からoauth2とトークンの生成まで。私は何もうまくいかないので、何かをつまんでいなければならない。

唯一の他の解決策は、彼らがGoogleカレンダーを更新し、それらに.ICSとしてカレンダーをエクスポートしますが、彼らはライブアップデートをしたい持っていることです。私はちょうどデータを読み取るために探していますので

は、私がここにの提案を試してみました。しかし、私は禁じられたエラー403のエラーを取得するので、それはdepretiatedですか?

あなたがサイトやアプリのカレンダーとやりとりしたいが、公開カレンダーのデータを読むためには、すべてのoauthものを処理することがわかります誰もがそれを見ることができるようにパブリックにすることを警告する)?

ありがとうございました

答えて

1

最後に解決策が見つかりました。ここに投稿して、後で完全なチュートリアルを作るかもしれません。うまくいけば、他人を助けてくれるでしょ

https://console.developers.google.com/iam-admin/projects ここでそれを作成した後、コンソールにあなたを取る必要がありますプロジェクトを作成...そうでない場合は、コンソールのリンクは、「GoogleカレンダーAPI」を有効にするライブラリのセクションでhttps://console.developers.google.com/

です。 GoogleカレンダーAPIを検索して選択し、上部に表示される有効化ボタンを使用します。

資格情報セクションに移動し、サービスアカウントキーを追加します。新しいサービスアカウント(任意の名前)。

ロールス:あなたはそれが、すべてのそれらを必要としない場合があります

プロジェクト>ビューア

のApp Engine> App Engineのビューア

ストレージ>オブジェクトビューア

はそのcombonationのようです私のために働いた。 JSONが選択されていることを確認し、作成すると.jsonファイルをダウンロードします。それは一度しかダウンロードできないのでダウンロードして安全な場所に保存してください。

最新のAPI for APIはこちらhttps://developers.google.com/google-apps/calendar/downloadsをダウンロードし、サイトのどこにでもアップロードしてください。かなり大きいサポートファイルがあるので、アップロードに時間がかかることがあります。

はその後、これは私のために働いたPHPコード:)は、Googleカレンダーからカレンダー... のIDです

CALENDARID、ポップアップを使用して、「カレンダー設定」を選択しています。次に、[カレンダーアドレス:]セクションの下部に向かって、カレンダーIDを書き留めます。 gSuiteツールを使用して設定する場合は、Googleの.comメールアドレスかメールアドレスのいずれかにする必要があります。

「YOURJSON.json」は、先にダウンロードしたjsonファイルの名前です。それをより安全に保つための提案は、あなたのサイトのルートディレクトリの上にアップロードしてそこからリンクすることです。それは読んだ役割しか持っていないので、何か問題が生じてはいけません。

require_onceあなたのサーバーにgoogle APIをアップロードした場所はどこにでもあります。 /vendor/autoload.phpの部分を忘れないでください:)。

これは私のために働いた解決策です(2017-04-24)。 PHPコードの最後の行は一般的なechoコマンドです。取得した配列と利用可能なすべてのデータを見ることができます。私が見ていない唯一のことは、イベントのカスタムカラーです。それのためのスペースがありますが来るように見えません。

<?php 
$maxEvents = 100; 
$minStartDate = date('c'); 
$calendarId = 'CALENDARID'; 

//path to the google API on your server 
require_once 'inc/google-api-php-client-2.1.3_PHP54/vendor/autoload.php'; 
//set environment variable to use your downloaded Service account key 
putenv("GOOGLE_APPLICATION_CREDENTIALS=YOURJSON.json"); 
$scope = 'https://www.googleapis.com/auth/calendar.readonly'; 

$client = new Google_Client(); 
$client->useApplicationDefaultCredentials(); 
$client->setScopes($scope); 
$service = new Google_Service_Calendar($client); 

//options link 
// https://developers.google.com/google-apps/calendar/v3/reference/events/list 
$options = array(
    'maxResults' => $maxEvents, 
    'orderBy' => 'startTime', 
    'singleEvents' => TRUE, 
    //UNIX timestamp format 
    'timeMin' => $minStartDate, 
    //to use a calendar other than the default uncomment and enter the calendar's ID 
    //not really needed here since you're using the $calendarId but does pull another calendar and more for completeness 
    //'iCalUID' => 'CAL_ID_FROM_GOOGLE_CALENDAR' 
); 

$results = $service->events->listEvents($calendarId, $options); 
//echo 'results<br><pre>';print_r($results); echo '</pre><br>'; 
?> 
関連する問題