google photoでアルバムが作成できなくなった

Google Photoにアルバムを作成して写真をアップロードする自作アプリが、突然動かなくなってしまいました。

表示されたエラーメッセージはこちらです。

googleapiclient.errors.HttpError: HttpError 403 when reauesting https://photoslibrary.googleapis.com/v1/albums?alt=json returned "Request had insufficient authentication scopes.". Details: "Request had insufficient authentication scopes."

どうやらスコープの指定に問題があるようです。先週まではこのアプリは普通に動いていたので変更があったたのかもしれません。

まず最初に、pip自体と、名前の先頭にgoogle-とついている関連パッケージ(google-api-python-clientなど)を最新のバージョンにアップデートしました。

次に、認証処理で使用しているスコープを以下のように変更しました。

- SCOPES = ['https://www.googleapis.com/auth/photoslibrary']
+ SCOPES = ['https://www.googleapis.com/auth/photoslibrary.appendonly']

修正後は、トークンなどの認証情報を保存しているファイルを削除して、新しく認証をやり直す必要があります。

私の環境では、token.jsonというファイルに認証情報が保存されているため、このファイルを削除してからアプリを再起動しました。起動時に認証画面が表示されるので、指示にしたがって認証すれば完了です。

なお、token.jsonの中には、修正前の古いスコープが保存されており、これが残っていると引き続き古いスコープでアクセスしてしまうため、アップロードに失敗してしまいます。

google photoのapiは、今年に入ってから少しずつ仕様変更が進んでいるようです。今後もこうした変更には注意が必要ですね。