Tôi hiện đang triển khai quyền truy cập vào Danh bạ Google qua OAuth 2.0 và Tài khoản dịch vụ được gọi là. Tài khoản dịch vụ được tạo cho người dùng thông thường như "[email protected]".Truy cập Api liên hệ của Google qua OAuth 2.0 và khóa cá nhân aka Tài khoản dịch vụ
Mã này để tạo ra OAuth 2.0 thông tin là:
public static GoogleCredential getCredentials() throws GeneralSecurityException, IOException {
GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SingleUserCredentials.SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes("https://www.google.com/m8/feeds")
.setServiceAccountPrivateKeyFromP12File(new File(SingleUserCredentials.SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();
credential.refreshToken();
return credential;
}
Tôi sau đó cố gắng để lấy lại địa chỉ liên lạc qua:
ContactsService myService = new ContactsService(
"myApp");
myService.setOAuth2Credentials(getCredentials());
URL feedUrl = new URL("https://www.google.com/m8/feeds/contacts/default/full");
Query myQuery = new Query(feedUrl);
ContactFeed resultFeed = myService.query(myQuery, ContactFeed.class);
// Print the results
for (ContactEntry entry : resultFeed.getEntries()) {
System.out.println(entry.getName().getFullName().getValue());
System.out.println("Updated on: " + entry.getUpdated().toStringRfc822());
}
Vấn đề là tôi không nhận được bất kỳ một liên lạc duy nhất từ tài khoản của tôi. Nguồn cấp dữ liệu luôn trống. Không có lỗi. Không có gì.
Khi truy cập miền được quản lý Google Apps thông qua cùng một cách tiếp cận, nó hoạt động độc đáo.
Tôi tự hỏi liệu Api liên hệ có hỗ trợ OAuth 2.0 cho tài khoản thông thường (aka @ gmail.com) khi sử dụng tệp khóa p12 và tài khoản dịch vụ hay không.
Xin chào, cảm ơn câu trả lời. Tuy nhiên, bạn đang mô tả cách tiếp cận cho quyền truy cập OAuth 2.0 dựa trên khóa vào một miền. Điều đó làm việc tốt cho tôi như mô tả ở trên. Những gì tôi thực sự tìm kiếm là một giải pháp để truy cập danh bạ thông qua một người dùng thông thường như [email protected] - không có miền được quản lý của Google. Tôi hy vọng câu hỏi của tôi ở trên có ý nghĩa trong vấn đề đó. –