サービス アカウントの Google OAuth 2.0 アクセス トークンを取得しようとしていますが、代わりにinvalid_grant
エラーが発生します。さまざまな成果物 (秘密鍵など) とクロックのタイミングを確認しましたが、これまでのところ解決できていません。
奇妙に思える関連項目が 1 つあります。Google のドキュメントには次のように書かれています。
HTTPS POST には3 つのパラメータが必要です。これらを以下に示します。
この後に、 2 つのパラメーター (および) を指定する 2つの行を持つテーブルが続きます。3 番目も必要なのでしょうか (何らかの方法で使用する例を見てきました)。(一部の) Google エンジニア (またはおそらくあなたのエンジニア) は 3 つまで数えられないのでしょうか? :)grant_type
assertion
assertion_type
要約すると、適切なパラメーターは何ですか? Google の現在のドキュメントからは不明なようです。
更新:追加情報: Google API クライアント ライブラリを使用できません。現在 Google でサポートされていない言語以外の言語がアプリケーションに必要なためです。したがって、JWT などを作成して署名するためのロジックを実装する必要がありますが、通常は推奨されません。サービス アカウント アーティファクトが適切であることを確認しました。それらを Google APIs Client Library for Java で使用して、同じカレンダーにアクセスできます (つまり、ターゲット プラットフォーム以外から)。特に、「client_id」は「...@developer.gserviceaccount.com」の形式で、鍵は 128 ビットの RSA 秘密鍵です。どちらもGoogle API ダッシュボードから取得します。