如何设置范围以调用 Java 中的 Google 人 API?

How do I set the scope to call the Google People API in Java?

我正在使用以下代码。我有一个有效的 accessToken。如何将范围设置为电子邮件、凭据上的个人资料?我正在使用 OAuth2 进行授权。

        static final String APPLICATION_NAME = "calendar-service";
        static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

        Credential credential = new 
 Credential(BearerToken.authorizationHeaderAccessMethod()).setAccessToken(accessToken);
        // Build a new authorized API client service.
        final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
    
        PeopleService service = new PeopleService.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
                .setApplicationName(APPLICATION_NAME)
                .build();

        ListConnectionsResponse response = service.people().connections()
                .list("people/me")
                .setPersonFields("names,emailAddresses")
                .execute();
        
        List<Person> connections = response.getConnections();
        if (connections != null && connections.size() > 0) {
            for (Person person : connections) {
                List<Name> names = person.getNames();
                if (names != null && names.size() > 0) {
                    System.out.println("Name: " + person.getNames().get(0)
                            .getDisplayName());
                } else {
                    System.out.println("No names available for connection.");
                }
            }
        } else {
            System.out.println("No connections found.");
        }
        
        return connections.get(0);

我收到以下错误:

GET https://people.googleapis.com/v1/people/me/connections?personFields=names,emailAddresses
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Insufficient Permission",
    "reason" : "insufficientPermissions"
  } ],
  "message" : "Request had insufficient authentication scopes.",
  "status" : "PERMISSION_DENIED"
}] with root cause

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden

这是我的 application.properties:

spring.security.oauth2.client.registration.google.clientId=XYZ456.apps.googleusercontent.com
spring.security.oauth2.client.registration.google.clientSecret=ABC123
spring.security.oauth2.client.registration.google.redirectUri={baseUrl}/oauth2/callback/{registrationId}
spring.security.oauth2.client.registration.google.scope=email,profile

请指教

有一个 quickstart 用于使用 People API 和 Java

它包含以下行:

private static final List<String> SCOPES = Arrays.asList(PeopleServiceScopes.CONTACTS_READONLY);

这是您可以根据需要将范围更改为不同范围或添加其他范围的行。

要了解您需要哪些范围,请访问 method you use 的文档页面。

重要

每次更改范围时,都需要从计算机中删除令牌文件,以便触发新的授权流程。