-
Notifications
You must be signed in to change notification settings - Fork 278
Closed
Labels
priority: p2Moderately-important priority. Fix may not be included in next release.Moderately-important priority. Fix may not be included in next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Description
Environment details
- Specify the API at the beginning of the title - this is generic, related to OAuth and Jetty.
- OS type and version: MacOS 10.15.1
- Java version: jdk1.8.0_191
- google-oauth-client version(s): 1.30.4
Steps to reproduce
- Upgrade from 1.30.3 to 1.30.4.
- Run the code below - GoogleCredentialHelper.getInstance(someScopes).authorize();
Code example
private static final String CREDENTIAL_FILEPATH = "/credentials/credentials.json";
private static final java.io.File DATA_STORE_DIR = new java.io.File(
System.getProperty("user.home"), ".credentials/template");
private FileDataStoreFactory dataStoreFactory;
private final JsonFactory jsonFactory;
private HttpTransport httpTransport;
private List<String> scopes;
private GoogleCredentialHelper(List<String> scopes) {
this.jsonFactory = JacksonFactory.getDefaultInstance();
try {
this.httpTransport = GoogleNetHttpTransport.newTrustedTransport();
this.dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
this.scopes = scopes;
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
private Credential authorize() throws IOException {
InputStream in = GoogleCredentialHelper.class.getResourceAsStream(CREDENTIAL_FILEPATH);
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(
jsonFactory, new InputStreamReader(in)
);
GoogleAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow.Builder(
httpTransport, jsonFactory, clientSecrets, scopes)
.setDataStoreFactory(dataStoreFactory)
.setAccessType("offline")
.build();
Credential credential = new AuthorizationCodeInstalledApp(
flow, new LocalServerReceiver()).authorize("user");
return credential;
}
public static GoogleCredentialHelper getInstance(List<String> scopes) {
if (instance == null) {
instance = new GoogleCredentialHelper(scopes);
}
return instance;
}
Stack trace
java.lang.NoSuchMethodError: org.eclipse.jetty.server.Connector.setHost(Ljava/lang/String;)V
at com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver.getRedirectUri(LocalServerReceiver.java:120)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:121)
at com.project.gapps.GoogleCredentialHelper.authorize(GoogleCredentialHelper.java:68)
Any additional information below
The issue appeared after upgrading from 1.30.3 to 1.30.4. Most likely related to the upgrade of Jetty to 8.2 in the latest version.
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.30.4</version>
</dependency>
The exception appears when credentials are not saved yet - user has to grant permissions via browser.
knoppixmeister, karendolan, YuanWenqing, boris-petrov, MarsYoung and 2 more
Metadata
Metadata
Assignees
Labels
priority: p2Moderately-important priority. Fix may not be included in next release.Moderately-important priority. Fix may not be included in next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.Error or flaw in code with unintended results or allowing sub-optimal usage patterns.