突然、YoutubeAPI等を実行すると「Method doesn't allow unregistered calle」エラーを吐いた原因
突然
YoutubeAPI
やGoogleMapApi
を実行するとエラーを吐くように。
{
"error": {
"code": 403,
"message": "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
"errors": [
{
"message": "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}
{
"error_message": "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account",
"results": [],
"status": "REQUEST_DENIED"
}
直前にした作業
下記のような感じで作業をしておりました。
※モデルクラスを作成して即時反映コマンドを叩いて…
php artisan make:model Live
php artisan migrate
php artisan cache:clear
php artisan config:cache
調査内容(空振り)
- APIの実行上限が突破していないか → してない
- OAuthが突然必要になるなどの仕様変更がないか → なさそう
調査内容(当たり)
- Laravel外にて、curlコマンドで実行できるか → できた
- 別PCに残っている、少し前のブランチではエラーが出ないか → 出ない
- env("API_KEYなどの環境変数")は取得できるか → Nullになる
原因
php artisan
が絡む作業をした後に、即時反映するために叩いていた下記のコマンド。
php artisan cache:clear
php artisan config:cache
「設定ファイルがキャッシュされると、.envファイルはロードされなくなり、env関数の呼び出しは全てnullを返す」仕様らしいです。
ということで、全ての.envの内容がNullで帰ってくる状態になっていました。
解決
先程のサイトに記載の通りに、config/app.php
に下記を追加。
'google_api_key' => env('GOOGLE_API_KEY'),
下記コマンドを実行。
php artisan config:cache
下記を追記し、無事に解決しました。
+ $client->setDeveloperKey(config('app.google_api_key'));
- $client->setDeveloperKey(env('GOOGLE_API_KEY'));
反省
エラー文の一字一句を見逃さない。
下記は、先程のエラー文の一部です。
私はこれを読んで、APIの認証とかトークンとかその辺がおかしいのかなと思いました。
APIが不安定である?(登録の呼び出し元
)。と言っているように聞こえたためです。
Method doesn't allow unregistered callers (callers without established identity).
このメソッドでは、未登録の呼び出し元(IDが確立されていない呼び出し元)を許可していません。
しかし、IDが確立されていない呼び出し元
というのは、
真摯に向き合ってみると「API_KEYがNull」と言われていた事に気づけます。
試しに、API_KEYを適当に「gewdfwege」と入力して実行すると、
下記のようなエラーになります。
API key not valid. Please pass a valid API key.
APIキーが有効ではありません。有効なAPIキーを渡してください。
あとがき
次回からは、全体を読んで雰囲気を掴むのではなく、
一字一句からエラー文の声を聴き分けていこうと思います。
経験の問題もあると思うので、ある意味仕方ない部分もあるかもしれません。
知識が増えたので次に同じようなパターンに出会ったときに解決できるかが楽しみです。
Discussion