web-dev-qa-db-ja.com

Googleクライアントが無効なJWT:トークンは有効期間が短いトークンである必要があります

私は Googleのphp apiクライアント を使用しています。サービスアカウントの クイックスタートガイド を実行しています。私は手順を完全に実行しました(私の知る限り)。次のエラーが発生しています。

{
   "error": "invalid_grant",
   "error_description": "Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values and use a clock with skew to account for clock differences between systems."
}

私がこのエラーで最も一般的な問題を読んだことから、システム時刻が間違っているかどうかです。私は自分のタイムゾーンと日付と時刻が原子時計と同期していることをトリプルチェックしました。 php set timezone関数を使用して自分のタイムゾーンをコンピューターに一致するように設定しましたが、引き続きエラーが発生します。 iatとexpの設定に関するメッセージの他の部分を調べていますが、まだどこにも届いていません。

誰かが私がこれを乗り越える方法について何か考えを持っていますか?

6
ajon

Invalid_grant エラーには2つの一般的な原因があります。

  1. サーバーのクロックが [〜#〜] ntp [〜#〜] と同期していません。 (解決策:サーバーの時刻が正しくない場合は、サーバーの時刻を確認してください。)
  2. 更新トークンの制限を超えました。 (解決策:あなたができることは何もありませんが、使用中の更新トークンを増やすことはできません)アプリケーションは複数の更新トークンを要求できます。たとえば、これはユーザーが複数のマシンにアプリケーションをインストールしたい状況で役立ちます。この場合、インストールごとに1つずつ、2つの更新トークンが必要です。更新トークンの数が制限を超えると、古いトークンは無効になります。アプリケーションが無効化されたリフレッシュトークンを使用しようとすると、invalid_grantエラー応答が返されます。 OAuth 2.0クライアントの一意のペアごとの制限と50の更新トークンです(この制限は変更される可能性があることに注意してください)。アプリケーションが同じクライアント/アカウントペアの更新トークンを要求し続ける場合、26番目のトークンが発行されると、以前に発行された1番目のリフレッシュトークンは無効になります。27番目に要求されたリフレッシュトークンは、2番目に発行されたトークンを無効にします。
7
DaImTo

ワオ!!!これは本当に愚かなことになった。私は開発サーバーとしてLaravelのHomesteadを実行しています。私は主に私のVMとローカルマシンのクロックが同期されることを想定していました。少なくとも作成時には。推測)、このコンピューターが休止状態の間、VMのクロックが実行されていなかったか、クロックが同期されていませんでした。それにもかかわらず、問題は、私のvmのクロックがシステムクロックより約9日遅れていることです。これが問題の原因でした。

6
ajon

ローカルで実行する場合は、コンピューターのタイムゾーンを確認してください。私にとっては問題でした。この場合の最善の解決策は、自動に設定することです。

1
Ghiles Rabah

システム時間を一度確認してください。 Windowsが最新のタイムゾーンを更新できなかったため、デュアルブートしている可能性があります。設定でもう一度更新して、魔法を見てください。

なぜその依存関係なのかわからないが、それはそれがどのように行われるかです!

1
Aman Bhatnagar

ıサーバーへのソリション変更タイムゾーンが見つかりました。

date
Output:
Wed Apr 26 17:44:38 UTC 2017 

その後

timedatectl list-timezones
Sudo timedatectl set-timezone America/New_York
Output:
Wed Apr 26 13:55:45 EDT 2017
0
T.Bayraktar