pinoyyid の優れた回答に代替ルートを追加させてください (これは私にとってはうまくいきませんでした - リダイレクト エラーをポップします)。
OAuthPlayground を使用する代わりに、HTTP REST API を直接使用することもできます。pinoyyid の回答との違いは、ローカルで処理を行うということです。pinoyyid の回答の手順 1 ~ 3 に従います。私はそれらを引用します:
- Google アカウントを作成します (例: my.drive.app@gmail.com) - または、既存のアカウントを使用している場合は、この手順をスキップしてください。
- API コンソールを使用して mydriveapp を登録します ( https://console.developers.google.com/apis/credentials/oauthclient?project=mydriveappまたは単にhttps://console.developers.google.com/apis/ ) 。
- 新しい資格情報のセットを作成します (サービス アカウント キーではなく NB OAuth クライアント ID を選択し、選択項目から [Web アプリケーション] を選択します)。
次に、プレイグラウンドの代わりに、資格情報に次を追加します。
承認された JavaScript ソース: http://localhost (これが必要かどうかはわかりませんが、実行してください。)
承認されたリダイレクト URI: http://localhost:8080
スクリーンショット (ドイツ語):
下の青いボタンから実際に変更を保存してください。
ここで、おそらく GUI を使用して HTTP 要求を作成したいと思うでしょう。私はInsomniaを使用しましたが、 Postmanまたはプレーンな cURLを使用できます。同意画面を簡単に通過できるため、Insomniaをお勧めします.
次のパラメーターを使用して、新しいGET要求を作成します。
URL: https://accounts.google.com/o/oauth2/v2/auth
Query Param: redirect_uri=http://localhost:8080
Query Param: prompt=consent
Query Param: response_type=code
Query Param: client_id=<your client id from OAuth credentials>
Query Param: scope=<your chosen scopes, e.g. https://www.googleapis.com/auth/drive.file>
Query Param: access_type=offline
選択したツールが URL エンコーディングを自動的に処理しない場合は、自分で正しく処理してください。
リクエストを送信する前に、リッスンする Web サーバーをセットアップしますhttp://localhost:8080
。node と npm が run をインストールしている場合はnpm i express
、次を作成しますindex.js
。
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('ok');
console.log(req)
});
app.listen(8080, function () {
console.log('Listening on port 8080!');
});
を介してサーバーを実行しますnode index.js
。req
オブジェクト全体をログに記録しないかnode index.js | less
、完全な出力のために実行することをお勧めします。
他の言語にも非常に簡単な解決策があります。たとえば、PHP の組み込み Web サーバーを 8080 で使用しますphp -S localhost:8080
。
(Insomnia で) リクエストを発行すると、ログインのプロンプトが表示されます。
電子メールとパスワードでログインし、同意画面を確認します (選択したスコープが含まれている必要があります)。
ターミナルに戻り、出力を確認します。すべてをログに記録した場合は、code=4/...
.
そのコードをコピーします。アクセス トークンとリフレッシュ トークンと交換するのは、認証コードです。コピーしすぎないでください。アンパサンドがある場合&
は、それ以降をコピーしないでください。&
クエリ パラメータを区切ります。が欲しいだけですcode
。
https://www.googleapis.com/oauth2/v4/token
ここで、エンコードされたフォーム URLを指す HTTP POST リクエストを設定します。Insomnia では、それをクリックするだけで済みます。他のツールでは、自分でヘッダーを に設定する必要がある場合がありますContent-Type: application/x-www-form-urlencoded
。
次のパラメーターを追加します。
code=<the authorization code from the last step>
client_id=<your client ID again>
client_secret=<your client secret from the OAuth credentials>
redirect_uri=http://localhost:8080
grant_type=authorization_code
繰り返しますが、エンコーディングが正しいことを確認してください。
リクエストを起動し、サーバーからの出力を確認します。応答には、JSON オブジェクトが表示されます。
{
"access_token": "xxxx",
"expires_in": 3600,
"refresh_token": "1/xxxx",
"scope": "https://www.googleapis.com/auth/drive.file",
"token_type": "Bearer"
}
access_token
すぐに使用できますが、有効期限は 1 時間です。リフレッシュ トークンに注意してください。これは、いつでも*新しいアクセス トークンと交換できるものです。
*
ユーザーがパスワードを変更したり、アクセス権を取り消したり、6 か月間非アクティブになったりした場合は、この手順を繰り返す必要があります。
ハッピーOAuthing !