0

我编写了在我的数据库中保存刷新和访问令牌的 cals。我也可以通过刷新令牌生成访问令牌。一切正常。我使用 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)并获得我需要授权码的凭据:

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();

例如网址:

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 时必须有人单击该按钮吗?我看到 Web 应用程序,其中一个人只单击该按钮一次。如何在不每次单击“允许访问”的情况下获取 Autorization 代码。我只需要单击一次。

4

1 回答 1

0

用户不必在每次运行应用程序时都授予对应用程序的访问权限。您将他们的凭据存储在数据库中,并在需要时重复使用它们。

查看 Java DrEdit 指南以获取完整的示例应用程序,该应用程序展示了如何为每个请求获取一组完整的凭据:

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

于 2013-03-07T17:55:10.247 回答