Ich versuche, eine Verbindung zu den Google Kontakte API zu meinen Kontakten/Personen, die in Google gespeichert sind, aber es wirft eine TokenResponseException: 401 Nicht autorisierte. Ich bin irgendwie neu in Google Oauth2.0. Ich habe die Dienstkontendatei bereits nach Bedarf in mein Projektstammverzeichnis heruntergeladen.TokenResponseException: 401 Nicht autorisiert beim Zugriff auf Google Kontakte Api
Unten ist der Code:
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.gdata.client.contacts.ContactsService;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;
public class Connector {
private static ContactsService contactService = null;
private static HttpTransport httpTransport;
private static final String APPLICATION_NAME = "example";
private static final String SERVICE_ACCOUNT_EMAIL = "[email protected]";
private static final java.util.List<String> SCOPE = Arrays.asList("https://www.google.com/m8/feeds/");
private Connector() {
// explicit private no-args constructor
}
public static void main(String[] args) {
System.out.println(getInstance());
}
public static ContactsService getInstance() {
if (contactService == null) {
try {
contactService = connect();
} catch (GeneralSecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return contactService;
}
private static ContactsService connect() throws GeneralSecurityException, IOException {
httpTransport = GoogleNetHttpTransport.newTrustedTransport();
java.io.File p12File = new java.io.File("example-e8135faedf4e.p12");
// @formatter:off
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JacksonFactory.getDefaultInstance())
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(SCOPE)
.setServiceAccountPrivateKeyFromP12File(p12File)
.setServiceAccountUser("[email protected]")
.build();
// @formatter:on
if (!credential.refreshToken()) {
throw new RuntimeException("Failed OAuth to refresh the token");
}
ContactsService myService = new ContactsService(APPLICATION_NAME);
myService.setOAuth2Credentials(credential);
return myService;
}
}
jedoch die folgende Ausnahme ausgelöst:
com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized
null
unter com.google.api.client.auth.oauth2.TokenResponseException.from (TokenResponseException.java:105) unter com.google.api.client.auth.oauth2.TokenRequest.executeU nparsed (TokenRequest.java:287) bei com.google.api.client.auth.oauth2.TokenRequest.execute (TokenRequest.java:307) bei com.google.api.client.googleapis.auth.oauth2. GoogleCredential.executeRefreshToken (GoogleCredential.java:384) bei com.google.api.client.auth.oauth2.Credential.refreshToken (Credential.java:489) bei Connector.connect (Connector.java:58) bei Steckverbinder .getInstance (Connector.java:31) bei Connector.main (Connector.java:25) BUILD erfolgreich (Gesamtzeit: 9 Sekunden )
ich so spät bin zu sehen, aber sie für die Hilfe danken. Ich war in der Lage, das Problem zu beheben, lassen Sie mich den endgültigen Code in Kürze –
@MichaelGatumaSelvatico: Was war Ihre Lösung. –