Google API Console で Webアプリケーションの OAuth クライアント ID を取得して使用します。そこには、承認済みのリダイレクト URI を登録して API からの呼び出しでその URI を呼べるようにします。 そうすると、以下の URL で Google API の oauth によりアカウントで権限の承認を行った後準備しておいた リダイレクト URI にジャンプします。 その時 code が手に入るので、それと認証情報の他のデータを使って cURL で アクセストークンを取得します( アクセストークンの生存期間は3600秒 ) クライアント ID : 登録した承認済みのリダイレクトURI :
https://accounts.google.com/o/oauth2/v2/auth?client_id=クライアントID&response_type=code&scope=https://www.googleapis.com/auth/photoslibrary&redirect_uri=登録した承認済みのリダイレクトURI
承認済みのリダイレクト URI に用意する PHP
<?php
// ************************************
// 表示用
// ************************************
print "<pre>";
print_r($_GET);
// ************************************
// API データ
// ************************************
$client_id = 'クライアント ID';
$client_secret = 'クライアント シークレット';
$redirect_uri = 'http://localhost/gapi/examples/idtoken.php';
// ************************************
// curl 処理
// ************************************
$curl = curl_init();
// ************************************
// デバッグ用の詳しいメッセージを出力
// ************************************
curl_setopt($curl, CURLOPT_VERBOSE, true);
$fp_debug = fopen("./debug.txt","w");
curl_setopt($curl, CURLOPT_STDERR, $fp_debug);
// ************************************
// POST 処理
// ************************************
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_URL, "https://www.googleapis.com/oauth2/v4/token");
// ************************************
// データ
// ************************************
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query([
'code' => $_GET['code'],
'client_id' => $client_id,
'client_secret' => $client_secret,
'redirect_uri' => $redirect_uri,
'grant_type' => 'authorization_code'
]));
// ************************************
// オプション
// ************************************
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// ************************************
// https 用
// ************************************
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
// ************************************
// ヘッダ内容
// ************************************
$handle = fopen("./header.txt", "w");
curl_setopt($curl, CURLOPT_WRITEHEADER, $handle);
// ************************************
// 送信
// ************************************
$result = curl_exec($curl);
if($result === false) {
$result = 'Curl error: ' . curl_error($ch);
}
// ************************************
// 終了処理
// ************************************
curl_close($curl);
fclose($fp_debug);
fclose($handle);
// ************************************
// 結果
// ************************************
print $result;
// ************************************
// 表示用
// ************************************
print "</pre>";
?>
関連する記事 Windows 用 curl で、Googls Photo API を呼び出して画像の baseUrl を取得する
|
|
【PHP + 通信の最新記事】
- fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信
- PHP の cURL でファイルアップロード
- PHP : WEB でもコマンドラインでも HTTP でファイルをダウンロードする 『fget.php』
- PHP : cURL : Google Photo API の albums.list メソッドを使用して アルバム一覧データを取得する
- PHP : cURL で FTP + SSL ダウンロード
- PHP の imap 関数で( Windows ローカル )、Yahoo メールのメールをさくらインターネットのメールへコピーする
- PHP の imap 関数( Windows のローカル )で、さくらインターネットのメールボックスの情報を取得する
- PHP : IMAP 関数 でまずメールのヘッダ部分を整理してログに出力する / ※ JSON 出力を追加
- ファイルを一つアップロード : FORM の target を IFRAME にして、PHP に JavaScript を書き出させて元のページにメッセージを表示させる
- Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信
- PHP をコマンドプロンプトから実行して、WEB 上のデータを取得するいくつかの方法
- FormData を使用して $.ajax で送信すると、ファイルのアップロードとメール送信(ファイル添付)を一度に行えます
- ファイルのアップロードからそれを添付してメールを送るテンプレート(スケルトン)
- PHP : mb_send_mail を使用した自家用メール送信 API
- PHP で Windows標準のオブジェクト(CDO.Message)とGMail を使ってメール送信
- PHP : http 経由でファイルのサイズを取得する file_size 関数と ファイルサイズを付加した get_imagesize 関数
- 連想配列のキー部分がプロパティと一致したらセットする( メール送信用クラス )
- PHP : リモートのファイルサイズを取得する
- ローカルの PHP を使ってコマンドプロンプトより簡単にバイナリファイルをアップロードする
- PHP の cURL で ftp サーバーにファイルをアップロードする(SSLなし)






