Google Play Developer APIで401エラーが出るパターン
Google Play の Developer API を実行した際、401 エラーが発生するケースってありますよね。
厄介なのは、原因が違っても返ってくるエラーがほぼ同じ点です。
具体的には、次のような permissionDenied のレスポンスが返ってきます。
{
"error": {
"errors": [
{
"domain": "androidpublisher",
"reason": "permissionDenied",
"message": "The current user has insufficient permissions to perform the requested operation."
}
],
"code": 401,
"message": "The current user has insufficient permissions to perform the requested operation."
}
}メッセージだけ見ても「権限が足りない」としか書かれておらず、これだけでは原因の切り分けがしづらいです。
実は、この同じ 401 エラーが発生する原因として、私が遭遇したのは次の 2 パターンでした。
- サービスアカウントの権限不足(承認の反映待ちを含む)
- サービスアカウントを連携する前に商品情報を設定していた
それぞれ順番に見ていきます。
サービスアカウントの権限不足
検証の過程で、Google の Purchase API を叩く際に 401 エラーに遭遇することがありました。
原因はサービスアカウントの権限不足と思われます。
この原因で引っ掛かる人の多くは、GooglePlay Console 上でサービスアカウントの API 利用承認をしていないパターンです。
利用許可をした記憶がない人は、GooglePlay Console の設定メニューを再度確認してみてください。
ただし、GooglePlay Console 上で承認したにも関わらず 401 エラーが続く場合は、権限の反映に時間がかかっている可能性があります。
実際に私がそうだったのですが、API の利用許可ボタン押下後、数時間経過しても 401 で弾かれ続けました。
その際、以下の情報に行き当たったのですが、そこのコメントにも書かれていた通り、割り切って次の日の朝まで待ってみたら疎通確認ができました。
I think that the cause of the problem is that it is necessary to wait several days before all methods of api starts working correctly. But I not found this in docs.
私は問題の原因はapiのすべての方法が正しく機能し始める前に数日待つ必要があることであると思います。しかし、私はこれをドキュメントで見つけませんでした。
Yeah, you’re right. Just had to wait a couple days.
ええ、その通りです。ほんの数日待たなければなりませんでした。
Getting 401 response in google developer api only when query GET subscriptions
正式な情報がないのでこれが正しいかどうかは何とも言えませんが、とにかく慣れていないと設定周りでは疲弊します・・・。
(だから、この備忘録を書いているわけですが)
サービスアカウント連携前に商品情報を設定した
権限不足とは別に、もう 1 つ 401 エラーに遭遇するケースも見つかりました。
返ってくるエラーは先ほどと同じ permissionDenied(401)なので、レスポンスを見ただけでは権限不足のケースと区別がつきません。
ただ、どうやらサービスアカウントを連携する前に商品情報を設定していた場合は、再度商品情報を編集・保存し直す必要があるようです。
権限まわりに問題がなさそうなのに 401 が解消しないときは、こちらのケースを疑ってみてください。
検証を進めていく上で、新たな問題や訂正が必要な項目が出てきたら追記していきます。
