0

データベースに更新とアクセス トークンを保存する 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 アプリケーションを目にします。「アクセスを許可」をクリックするたびに認証コードを取得する方法。一度だけクリックする必要があります。

4

1 に答える 1

0

ユーザーは、アプリを実行するたびにアプリへのアクセスを許可する必要はありません。クレデンシャルをデータベースに保存し、必要に応じて再利用します。

すべてのリクエストに対して完全なクレデンシャルのセットを取得する方法を示す完全なサンプルアプリについては、JavaDrEditガイドを確認してください。

https://developers.google.com/drive/examples/java

于 2013-03-07T17:55:10.247 に答える