Attualmente sto implementando l'accesso a Contatti Google tramite OAuth 2.0 e un cosiddetto account di servizio. L'account di servizio viene generato per un utente normale come "[email protected]".Accesso ai contatti di Google Api tramite OAuth 2.0 e chiave privata alias Account di servizio
Il codice per generare il credenziali OAuth 2.0 è:
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;
}
sto quindi cercando di recuperare i contatti tramite:
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());
}
Il problema è che non ho ricevuto alcun un singolo contatto dal mio account. Il feed è sempre vuoto. Non c'è errore Niente.
Quando si accede a un dominio gestito di Google Apps tramite lo stesso approccio, funziona perfettamente.
Mi chiedo se Contact Api supporti OAuth 2.0 per account ordinari (ovvero @ gmail.com) quando si utilizza un file chiave p12 e un account di servizio.
Ehi Anonimo, grazie per la risposta. Tuttavia, stai descrivendo l'approccio per l'accesso OAuth 2.0 basato su chiave a un dominio. Questo funziona bene per me, come descritto sopra. Quello che cerco davvero è una soluzione per accedere ai contatti tramite un utente normale come [email protected] - senza un dominio gestito da Google. Spero che la mia domanda di cui sopra abbia senso al riguardo. –