Google Photo API を使用するには、認証されたアクセストークンが必要です。なので、ここで使用しているアクセストークンは、別のコードで取得したものをセッションに保存して利用しています。 $_SESSION['access_token'] アクセストークンは 3600 秒しか使用できないので随時必要な時に新たに取得する必要があります。( refresh_token を取得して使用します。その場合最初の認証の URL に access_type=offline をセットして認証する必要があります / ※ 認証時にしか取得できませんでした ) $_SESSION['access_token'] は、PHP + cURL で Google Photo API の アクセストークンを取得する のコードに session_start(); を先頭に追加してセッションを使用可能にしてから、以下のコードを最後に使用して保存します。
$token = json_decode($result, true); print "<pre>"; print_r($token); print "</pre>"; $_SESSION['access_token'] = $token['access_token']; // ************************************ // refresh_token は、認証の URL に // access_type=offline を使用して // 認証した最初のみ取得できるようです // ************************************ if ( !isset( $_SESSION['refresh_token'] ) ) { $_SESSION['refresh_token'] = $token['refresh_token']; }
album-list.php
<?php session_cache_limiter('nocache'); session_start(); ?> <!DOCTYPE html> <html> <head> <meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport"> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> </head> <body> <?php print "<pre>"; print_r($_SESSION); print "</pre>"; $start = true; $page_token = ''; // ************************************ // curl 処理 // ************************************ $curl = curl_init(); // ************************************ // デバッグ用の詳しいメッセージを出力 // ************************************ curl_setopt($curl, CURLOPT_VERBOSE, true); $fp_debug = fopen("./debug.txt","w"); curl_setopt($curl, CURLOPT_STDERR, $fp_debug); // ************************************ // HTTP ヘッダ // ************************************ $header[] = "Authorization: Bearer {$_SESSION['access_token']}"; curl_setopt($curl, CURLOPT_HTTPHEADER, $header); // ************************************ // オプション // ************************************ 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); // ************************************ // アルバムを全て取得 // access_albums( ) が true を返す間 // ループする // ************************************ while( access_albums( ) ) { } // ************************************ // 終了処理 // ************************************ curl_close($curl); fclose($fp_debug); fclose($handle); // ************************************ // アルバムを全て取得する関数 // ************************************ function access_albums( ) { // 開始フラグ global $start; // 最大50件の読み込みでまだアルバムがある場合に // セットされるデータ global $page_token; // cURL ハンドル global $curl; // 初回 if ( $start ) { $start = false; $url = "https://photoslibrary.googleapis.com/v1/albums?pageSize=50"; } // 2回目以降 else { $url = "https://photoslibrary.googleapis.com/v1/albums?pageSize=50&pageToken={$page_token}"; } // URL を設定( v1/albums は GET メソッド ) curl_setopt($curl, CURLOPT_URL, $url ); // ************************************ // 送信 // ************************************ $result = curl_exec($curl); if($result === false) { // cURL そのものがエラー return false; } else { // 正しいデータを取得したので連想配列に変換 $json = json_decode( $result, true ); // 出力 print "<pre>"; print_r( $json ); print "</pre>"; // この呼び出しで全ての場合は false を返して終了 if ( !isset( $json['nextPageToken'] )) { return false; } } // 次の一覧を取得する為のデータ $page_token = $json['nextPageToken']; // 次を読む return true; } ?> </body> </html>
|
【PHP + 通信の最新記事】
- fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信
- PHP の cURL でファイルアップロード
- PHP : WEB でもコマンドラインでも HTTP でファイルをダウンロードする 『fget.php』
- PHP + cURL で Google Photo API の アクセストークンを取得する
- 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なし)