ユーザーの介入なしにアプリ(ウェブまたはインストール済み)を認証するにはどうすればよいですか?
例えば、Driveのファイルにバックグラウンドでアクセスする必要があるWebアプリがあるとします。このアプリは、アクセスするファイルを所有するか、所有者がドキュメントを共有しているGoogleアカウントで実行されます。
私のアプリがリフレッシュトークンを必要とすることは理解していますが、私はそれを取得するためのコードを書きたくありません なぜなら、私はそれを一度だけ行うからです。
**NB.このアプリは、従来のGoogleアカウントで実行されます。サービスアカウントは、ある状況下では有効なアプローチです。しかし、アプリをシミュレートするためにOauth Playgroundを使用する手法は、冗長な労力の多くを節約することができ、サービスアカウントへの共有がサポートされていない任意のAPIに適用されます。
61
2
これは、Oauth2 Playground(https://developers.google.com/oauthplayground)を使って行うことができます。
手順:-)
1.Google アカウントを作成する (例: my.drive.app@gmail.com) - または、既存のアカウントを使用している場合は、この手順をスキップします。
2.2. API コンソールを使用して mydriveapp を登録します (https://console.developers.google.com/apis/credentials/oauthclient?project=mydriveapp または https://console.developers.google.com/apis/ のみ)。 1.新しいクレデンシャルセットを作成します。資格情報/資格情報の作成/OAuthクライアントID
を選択し、
Webアプリケーション`を選択します。 1.有効なリダイレクトURIとして、https://developers.google.com/oauthplayground を含めます。 1.クライアントID(Webアプリケーション)とクライアントシークレットを記録する。 1.my.drive.app@gmail.com としてログインする。 1.Oauth2プレイグラウンドに移動 1.設定(歯車のアイコン)で、以下を設定します。これで、アプリは無人で実行され、https://developers.google.com/accounts/docs/OAuth2WebServer#offline に記載されているように Refresh Token を使用して Access Token を取得することができるようになります。
注意リフレッシュ・トークンはGoogleによって期限切れにされることがあるので、その場合は新しいリフレッシュ・トークンを取得するために手順5以降を繰り返す必要があることに注意してください。この場合、リフレッシュトークンを使用しようとすると、Invalid Grantが返されることになります。
注意2.このテクニックは、自分自身(および 自分自身のみ)のDriveアカウントにアクセスするWebアプリを作成する場合に有効で、一度だけ実行される認証コードをわざわざ記述する必要はありません。ステップ1をスキップし、ステップ6で "my.drive.app" を自分の電子メールアドレスに置き換えるだけです。
Woody'のコメントで、Googleのビデオ(https://www.youtube.com/watch?v=hfWe1gPCnzc)を紹介しています。
. . .
OAuth Playground の Refresh Token を使って Drive ファイルを一覧表示する方法を示す JavaScript ルーチンを紹介します。Chromeの開発コンソールにコピーペーストするか、nodeで実行することができます。もちろん、あなた自身の認証情報を提供してください(以下のものはすべて偽者です)。
pinoyyid'さんの素晴らしい回答(私の場合はうまくいきませんでした - リダイレクトエラーが出ます)に別のルートを追加させてください。
OAuthPlayground を使用する代わりに、HTTP REST API を直接使用することもできます。pinoyyid'の回答との違いは、ローカルで行うことです。pinoyyid's の回答のステップ 1 ~ 3 に従ってください。引用します。
1.1. Googleアカウントを作成する (例: my.drive.app@gmail.com) - 既存のアカウントを使用している場合は、このステップは省略できます。 2.2. APIコンソールを使用して、mydriveappを登録します (https://console.developers.google.com/apis/credentials/oauthclient?project=mydriveapp または https://console.developers.google.com/apis/ のみ)。 3.3. 新しい認証情報を作成します(NB OAuth Client ID not Service Account Key と選択から "Web Application" を選択します)。
ここで、playgroundの代わりに、以下を認証情報に追加します。
Authorized JavaScript Sources: http://localhost (これが必須かどうかはわかりませんが、やっておきましょう。) 認可されたリダイレクトURI: http://localhost:8080
スクリーンショット(ドイツ語)。
[OAuthソース/リダイレクト設定]]1。
下の青いボタンから変更を 実際に 保存することを確認してください!
ここで、HTTPリクエストを作成するためにGUIを使用したいと思うでしょう。私はInsomniaを使いましたが、Postmanや普通のcURLを使うことも可能です。Insomniaは同意の画面を簡単に見ることができるのでおすすめです。
以下のパラメータを指定して、新しい GET リクエストを作成します。
もしあなたのツールがURLエンコードを自動で処理しない場合は、自分で正しく処理するようにしてください。
リクエストを送信する前に、
http://localhost:8080
をリッスンするウェブサーバーをセットアップしてください。nodeとnpmがインストールされている場合は、npm i express
を実行し、index.js
を作成します。``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!'); });
code= client_id= client_secret= redirect_uri=http://localhost:8080 grant_type=authorization_code
この
access_token
はすぐに使うことができますが、有効期限は1時間しかありません。リフレッシュトークンに注意してください。これは常に*新しいアクセストークンと交換することができるものです。ユーザーがパスワードを変更した場合、アクセスを取り消した場合、6ヶ月間活動を停止した場合などには、この手順を繰り返さなければなりません。
それでは、Happy OAuthing!