Picasa Web Albums Data API v2 + PHPでアルバム一覧取得(OAuth2)
Picasa Web Albumsに保存してある非公開のアルバムと写真を表示する機能を作ったのだけれど、メールアドレスとパスワードでログイン出来なくなったのでOAuth2を使うようにしたときの覚書。
参考
目次
- デベロッパーコンソールでAPI設定
- PHPライブラリ
- アルバム一覧を取得
1.デベロッパーコンソールでAPI設定
全て公式ドキュメントに書いてある。
Google Developers Consoleでプロジェクト作成して「認証情報」から「新しいクライアントIDを作成」する。
アプリケーションの種類は「ウェブアプリケーション」。
「サービスアカウント」で認証画面とか表示せずに利用しようとしたけど、認証しても「default」が登録したGoogleアカウントにならなかった(公開情報にはアクセスできた)。詳しく調べれば方法があるかもしれない。。。
「ウェブアプリケーション」+「オフラインアクセス」で実現できることが分かった。
2.PHPライブラリ
公開されているライブラリを使う。
WordPressプラグインとして公開されている「PWA+PHP Picasa Web Albums for WordPress」はライブラリを使わずに頑張って自前で実装してる。何かの参考になるかもしれない。
3.アルバム一覧を取得
ライブラリを使ったアルバム一覧を取得するまでの手順
- setAccessType('offline')でリフレッシュトークンも取得するように設定
- createAuthUrl()へリダイレクトして認証コードを取得
- authenticate(認証コード)でアクセストークンとリフレッシュトークンをJSON形式で取得
- JSON形式のままデータベースに保存
- setAccessToken()にそのまま渡す
- getAuth()->authenticatedRequest()するとアクセストークンが期限切れの場合に自動でリフレッシュトークンを使って新しいアクセストークンを取得してくれる。
手順1,2,3は初回のみ。再度authenticateするときはrevokeToken()しないとリフレッシュトークンを取得できないので注意。
アルバム一覧をjson形式で取得する場合の例
$req = new Google_Http_Request('https://picasaweb.google.com/data/feed/api/user/default/');
$req->setQueryParam('alt', 'json');
$req->setQueryParam('kind', 'album');
$res = $client->getAuth()->authenticatedRequest($req);
if (!$data = json_decode($res->getResponseBody())) {
$data = $res->getResponseBody();
}
需要があるならFacebook Page AlbumsみたいにWordPressプラグインとして公開しようかな。
< Related Posts >