に認証した後、PHPサーバー上のGoogleカレンダーのイベントを取得...私は何をしたいですので、ここでオーケーiOSアプリ
- ユーザーが、私はGoogleカレンダーへの読み取り/書き込みアクセス
- とiPhone上のアプリを許可私のPHPサーバーにトークンでGoogle
- 峠からのいくつかの種類の認証トークンを取得し、定期的に、Googleのイベントをチェックして、サーバーのデータベース
- GOOGを送信し、それらを格納するデータベース
- 使用トークンに保存しますleイベントデータをjsonとしてアプリケーションに送信する
Googleプッシュイベントをサーバーに実装して、リモートプッシュ通知のような追加機能を構築できます。
認証トークンを取得してサーバーに保存し、それを使ってGoogleのカレンダーAPIからイベントを取得しましたが、同じリソースを見つけることができませんでした。誰かがこれにいくつかの光を投げることができます。
UPDATE
私は正常に私はGoogleからの認証トークンとリフレッシュトークンを取得し、それをデータベースに保存し、ステップ3
までのシナリオを実装することができました。今度はGoogle API php clientを使用して、先ほど取得したアクセストークンを使用してGoogleのカレンダーAPIに接続しようとしています。私は
require_once(APPPATH . "libraries/Google/Google_Client.php");
require_once(APPPATH . "libraries/Google/contrib/Google_CalendarService.php");
$client = new Google_Client();
$client->setAccessToken($google_access_token);
$calendar = new Google_CalendarService($client);
$calendarList = $calendar->calendarList->listCalendarList();
echo print_r($calendarList, true);
しかし、今、私はこのエラーを取得...
PHP Fatal error: Uncaught exception 'Google_AuthException' with message 'Could not json decode the token' in /myserver/application/libraries/Google/auth/Google_OAuth2.php:162
Stack trace: /myserver/application/libraries/Google/Google_Client.php(170): Google_OAuth2->setAccessToken('a_token...')
私は私が直接指定せずに、GoogleのクライアントAPIでアクセストークンを設定しようとしていますことを理解して...次のコードを使用していますユーザーがサーバー上でGoogleカレンダーへのアクセスを許可したときに通常使用されるリダイレクトURLまたはその他のパラメーター。これは私のように動作するはずですか?
さらにいくつかの掘削時にUPDATE 2
、私が直接APIをGoogleクライアントとして動作しませんsetAccessToken
を使用してアクセストークンを設定することsetAccessToken
方法でJSONエンコードされた文字列を期待していることが分かりました。いくつかの調整の後、私は次のように私のコードを変更し....
require_once(APPPATH . "libraries/Google/Google_Client.php");
require_once(APPPATH . "libraries/Google/contrib/Google_CalendarService.php");
$client = new Google_Client();
$client->setAccessType('offline');
$client->refreshToken($google_refresh_token);
$newToken = $client->getAccessToken();
$client->setAccessToken($newToken);
$calendar = new Google_CalendarService($client);
$calendarList = $calendar->calendarList->listCalendarList();
echo print_r($calendarList, true);
今、私は取得していますエラーがinvalid_request
のことです。
Error refreshing the OAuth2 token, message: '{"error" : "invalid_request"}'
あなたはGoogle_Client :: refreshToken 'にあなたの呼び出しの後の2行を削除することができます'。その関数のコード内のコメントは、「指定されたリフレッシュトークンで新しいOAuth 2.0アクセストークンを取得します」ということです。実際には、新しいアクセストークンをクライアントの現在のアクセストークンとして設定します。 – Jonathan
...また、クライアントIDだけでなくクライアントシークレットも設定しない限り、これは機能しません。 (N.B.「client_id」と「client_secret」の両方は、Google API PHPクライアントの/ a設定ファイルで設定できます) – Jonathan
@dvijaz - アクセストークンに関するヒントをありがとう。 'client_secret'に関する限り、' client_secret'も設定せずにコードが動作しています。 – vikmalhotra