データベースに更新とアクセス トークンを保存する calss を作成しました。リフレッシュトークンでもアクセストークンを生成できます。すべてがうまく機能します。私はWebアプリケーションで作業しています。今、私は別の質問があります:
1) たとえば、既に更新トークンを保存しています。次に、別の人が来たら、その人がデータベースに更新トークンを持っているかどうかを確認して、アクセストークンを生成する必要があります。しかし、最初に彼女のユーザー ID を取得する必要があります。
2) ユーザー ID を取得するには、彼女の資格情報が必要です
例えば:
Oauth2.Builder builder = new Oauth2.Builder(new NetHttpTransport(), new JacksonFactory(), credentials);
Oauth2 userInfoService = builder.build();
Userinfo userInfo= userInfoService.userinfo().get().execute();
3) 資格情報を取得するには、authorizationCode が必要です。
Credential credentials = exchangeCode(authorizationCode);
4) 認証コードを取得するには、ユーザーはそのコードを取得するために [アクセスを許可] をクリックする必要がありますか? それは正しいですか?
例えば:
HttpTransport httpTransport = new NetHttpTransport(); JacksonFactory jsonFactory = new JacksonFactory();
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory, GoogleStorage.class.getResourceAsStream(CLIENTSECRETS_LOCATION));
flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, jsonFactory, clientSecrets, SCOPES).setAccessType("offline").setApprovalPrompt("force").build();
認証コードを取得する URL を取得します。
flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI).build();
たとえば、URL:
https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&client_id=695230079990-bus3d9gp31vvv64qq5n4ma9mk8vtc1ck.apps.googleusercontent.com&redirect_uri=http://localhost/oauth2callback&response_type=code&scope=https://www.googleapis.com/auth/drive.file%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/userinfo.profile
Drive API に接続しようとするたびに、そのボタンをクリックする必要がありますか? 1 人がそのボタンを 1 回だけクリックする Web アプリケーションを目にします。「アクセスを許可」をクリックするたびに認証コードを取得する方法。一度だけクリックする必要があります。