ある日、既存で動いていたアプリが新たにクライアントIDを発行してみたら動かなくなった。
うちのアプリではGoogle API Client LibraryのPHP版を使ってます。
どうやらOAuth認証でエラーになっているらしく、
400. エラーが発生しました。
エラー: invalid_scope
このアプリは次のスコープへのアクセスの確認が完了していません: {invalid = [https://mail.google.com/,https://www.googleapis.com/auth/gmail.readonly,https://www.googleapis.com/auth/gmail.modify,https://www.googleapis.com/auth/gmail.compose]}。サポートについてデベロッパーにお問い合わせください。デベロッパーの方は、このプロジェクトで上記のスコープが必要な場合は、プロジェクトへのアクセス権限があるアカウントにログインして、もう一度お試しください。必要でない場合は、サポートについてデベロッパーにお問い合わせください。
Request Details
client_id=xxxxxxx.apps.googleusercontent.com
というページが出るように。(ユーザ側)
なぜだ。なぜなんだ。
調べた。頑張って調べた。
やっと見つけた原因がコレ。2017/5/11付けで発表された記事。
説明はGoogle翻訳に任せるとして。
要約すると、「Googleがレビューして承認したら認証できるようになるよ」ってことらしい。
つまり、Developer Consoleから新たにクライアントIDを発行する度に、使用するスコープに対する説明責任が問われる、ということのようです。
Gmail APIを使っているのだけれども、注釈が書いてあった。
https://developers.google.com/gmail/api/auth/about-auth
そこに書いてある通り、以下の2通りの方法で解決ができた。
(承認はまだ通ってないけど②で即反映だった)
①OAuth Developer Verification Formで承認を受ける
https://support.google.com/code/contact/oauth_app_verification
②Allow Risky Access Permissions By Unreviewed Appsのフォーラムに参加する
https://groups.google.com/forum/#!forum/risky-access-by-unreviewed-apps
一手間増えたわけですが...とりあえず情報に辿り着くまでにかなり苦労したのでシェアしときます。
マメに記事チェックしてろよ!っていうツッコミはなしで。
この件について何か他にも情報や訂正等があったら教えて頂けると嬉しいです。
それでは。