SQLの窓

2019年01月21日


PHP : cURL : Google Photo API の albums.list メソッドを使用して アルバム一覧データを取得する

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 + 通信の最新記事】
posted by lightbox at 2019-01-21 15:05 | PHP + 通信 | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり