私はそれがあなたがやりたいことの「公式」だと思う解決策を見つけました。
まず、GoogleAPI「インストールされたアプリケーションのクライアントID」をアクティブ化する必要があります。
Google APIコンソールに移動して、プロジェクトを作成します。
次に、カレンダーをアクティブにします。
[APIアクセス]オプションに移動し、[OAuth2.0クライアントの作成]ボタンを使用します。
製品に名前(および必要に応じてロゴ)を付けます。「次へ」をクリックします。
[インストールされたアプリケーション]オプションを選択し、[クライアントIDの作成]をクリックします。
これで、アクセスが構成されました。ここで、いくつかのコードが必要になります。それらを取得するには:
*「認証コード」。これを取得するには、次の情報が必要です。
範囲:https ://www.google.com/calendar/feeds/ (カレンダーAPIにアクセスする場合。他にも、OAuth 2.0プレイグラウンドで見つけることができます)
CLIENT_ID:GoogleAPIコンソールのAPIアクセスセクションにあります。
REDIRECT_URI:同じ場所で入手してください。
次に、次のコードをファイルにコピーし、値を変数に入れ、コード(php -q script_name.php)を実行して、印刷されたURLに移動します。
<?php
$scope = '';
$client_id = '';
$redirect_uri = '';
$params = array(
'response_type' => 'code',
'client_id' => $client_id,
'redirect_uri' => $redirect_uri,
'scope' => $scope
);
$url = 'https://accounts.google.com/o/oauth2/auth?' . http_build_query($params);
echo $url."\n";
?>
Webページでアクセスを許可するように求められます。そうすれば、認証コードであるコードを取得できます。
*「リフレッシュコード」。それを取得するには、次のものが必要です。
以前に使用したデータと、「クライアントID」と「リダイレクトURI」の間のAPIコンソールの「クライアントシークレット」コード。
前と同じように、次のコードをコピーして、変数を配置します(コードフィールドは認証コードです)。実行すると、結果は「トークンの更新」になります。
<?php
$url = 'https://accounts.google.com/o/oauth2/token';
$post_data = array(
'code' => '',
'client_id' => '',
'client_secret' => '',
'redirect_uri' => '',
'grant_type' => 'authorization_code',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$token = json_decode($result);
echo $token->refresh_token . "\n";
?>
この時点で、必要なものはすべて揃っています。ある日、認証コードを変更する場合は注意が必要です。新しいキーを取得する必要があります。
カレンダーサービスにアクセスするには、次の例を示します。使用する前に変数値を変更します。この例では、主要なカレンダーイベントを取得しますが、カレンダーAPI( http://code.google.com/intl/ca/apis/calendar/v3/getting_started.html#background_operations)で任意のアドレスを変更できます。
<?php
$scope = 'https://www.google.com/calendar/feeds/';
$client_id = '';
$client_secret = '';
$redirect_uri = '';
$refresh_token = '';
$token_url = 'https://accounts.google.com/o/oauth2/token';
$post_data = array(
'client_secret' => $client_secret,
'grant_type' => 'refresh_token',
'refresh_token' => $refresh_token,
'client_id' => $client_id
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $token_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$token_object = json_decode($result);
$access_token = $token_object->access_token;
// Get the results
$rest_url = 'https://www.googleapis.com/calendar/v3/calendars/primary/events';
$header = "Authorization: OAuth " . $access_token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
curl_setopt($ch, CURLOPT_URL, $rest_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$rest_result = curl_exec($ch);
print_r(json_decode($rest_result));
?>
まず、スクリプトは1時間有効な「アクセストークン」を要求します。次に、スクリプトはRESTサービス(カレンダースコープ内の任意のサービス)を取得し、ヘッダーでアクセストークンを送信します。スクリップで最高の速度を出すには、アクセストークンを3600秒より古くなるまでキャッシュに保存することをお勧めします。このように、スクリプトは2つの呼び出しのうちの1つを回避します。
チップ:
OAuthプロセスで送信されるすべての情報を理解するには、OAuth2.0Playgroundにアクセスしてください。それは私を大いに助けました
EricNagelのブログへの投稿で解決策がわかりました。すべてのメリットは彼にあります。「評判」が足りないのでリンクできません。