我试图提取谷歌联系人信息(照片,性别等),我们使用Google People API来做到这一点。
我在createContact服务中使用电子邮件搜索联系人。
我创建了一个客户端ID和客户端密钥,使用简单的oAuth2.0代码,我得到了一个刷新令牌,我的服务器用它来生成凭证。
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
String clientId = "";
String clientSecret = "";
String scope = "https://www.googleapis.com/auth/contacts";
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
httpTransport, jsonFactory, clientId, clientSecret,
Arrays.asList(scope))
.setAccessType("offline")
.setApprovalPrompt("force")
.build();
LocalServerReceiver localReceiver = new LocalServerReceiver.Builder().setPort(8089).build();
Credential credential = new AuthorizationCodeInstalledApp(flow, localReceiver).authorize("user");
通过这种方式,我获得了refreshToken并将其保存在安全文件中。 之后,我的应用程序连接到谷歌并从该文件获取clientId,ClientToken和RefreshToken并尝试连接 -
GoogleCredential googleCredential = new GoogleCredential.Builder()
.setJsonFactory(jsonFactory)
.setTransport(transport)
.setClientSecrets(googlePeopleKey.getClientId(), googlePeopleKey.getClientSecret())
.build().setRefreshToken(googlePeopleKey.getRefreshToken());
似乎每个用户的结果不同。当我使用我的用户之前进行身份验证的刷新代码进行操作时,我无法获得公司中其他用户(以相同方式授权)的所有信息。今天,它翻转了,在另一个测试中,我得到了他没有的结果。很奇怪。
我正在查看限制率,但似乎我甚至没有接近限制。
您是否知道为什么它会为不同的用户返回不同的结果?不同的结果意味着有时其中一个用户可以看到个人资料图片,但另一个用户无法看到。
谢谢!