서버 인증에 서버를 구현하여 메시지의 레이블을 수정하려고하므로 다른 것들 (읽기/쓰기)을 수행 할 수있는 권한을 부여하는 GMAIL_MODIFY 범위가 필요합니다. 이 변경을 구현할 때 첫 번째 요청을 시도하자마자 NullPointerException이 발생합니다.Gmail API : 범위 GMAIL_READONLY는 작동하지만 GMAIL_MODIFY는 작동하지 않습니다. 왜 그런가요?
간단히하기 위해 Gmail 계정의 간단한 목록 코드 목록을 사용하고 있습니다.
내 계정의 개발자 콘솔과 모든 재즈에서 프로젝트를 설정했습니다.
이public static void main (String [] args) throws IOException {
Collection<String> scopesArray = new ArrayList<String>();
scopesArray.add(GmailScopes.GMAIL_MODIFY);
//scopesArray.add(GmailScopes.GMAIL_READONLY);
{
try {
httpTransport = GoogleNetHttpTransport.newTrustedTransport();
credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(email_address)
.setServiceAccountPrivateKeyFromP12File(new File("myfile.p12"))
.setServiceAccountScopes(scopesArray)
.setServiceAccountUser(USER)
.build();
}
catch (IOException | GeneralSecurityException e)
{
throw new RuntimeException(e);
}
}
// Create a new authorized Gmail API client
Gmail service = new Gmail.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(APP_NAME).build();
try {
ListThreadsResponse threadsResponse = service.users().threads().list(USER).execute();
List<com.google.api.services.gmail.model.Thread> threads = threadsResponse.getThreads();
for (com.google.api.services.gmail.model.Thread thread : threads) {
System.out.println("Thread ID: " + thread.getId());
}
} catch (GoogleJsonResponseException e) {
GoogleJsonError error = e.getDetails();
System.err.println("Error code: "+ error.getCode());
System.err.println("Error message: " + error.getMessage());
} catch (HttpResponseException e) {
// No Json body was returned by the API.
System.err.println("HTTP Status code: "+ e.getStatusCode());
System.err.println("HTTP Reason: " + e.getMessage());
} catch (IOException e) {
e.printStackTrace();
}
이 반환 : 스레드 "주요"java.lang.NullPointerException이 에서 예외 com.google.api.client.repackaged.com.google.common에서
여기 내 자바 코드입니다. base.Preconditions.checkNotNull (Preconditions.java:191) (com.google.api.client.util.Preconditions.checkNotNull (Preconditions.java:127) , com.google.api.client.json.jackson2.JacksonFactory). createJsonParser (JacksonFactory.java:96) at com.google.api.client.json.JsonObjectParser.parseAndClose (JsonObjectParser.java:85) com.google.api.client.json.JsonObjectParser.parseAndClose (JsonObjectParser.java:81) 에서 com.google.api.client.auth.oauth2.TokenResponseException.from (TokenResponseException.java:88) at com.google .api.client.auth.oauth2.TokenRequest.executeUnparsed (TokenRequest.java:287) (com.google.api.client.auth.oauth2.TokenRequest.execute (TokenRequest.java:307) , com.google.api) .client.googleapis.auth.oauth2.GoogleCredential.executeRefreshToken (GoogleCredential.java:268) (com.google.api.client.auth.oauth2.Credential.refreshToken (Credential.java:489) , com.google.api) .client.auth.oauth2.Credential.intercept (Credential.java:217) (com.google.api.client.http.HttpRequest.execute (HttpRequest.java:859) , com.google.api.client.googleapis) . AbstractGoogleClientRequest.executeUnparsed (AbstractGoogleClientRequest.java:410) com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed (AbstractGoogleClientRequest.java:343) com.google.api.client.googleapis.services. AbstractGoogleClientRequest.execute (AbstractGoogleClientRequest.java:460) core.crescent.gmail.GmailApiQuickstart.main (GmailApiQuickstart.java:228)에서
나는 그것이 작동 범위 GMAIL_READONLY 범위를 사용
. GMAIL API 문서에 따라 작업 범위 ( https://developers.google.com/gmail/api/v1/reference/users/threads/list)에 따라 변경되는 이유는 무엇입니까?고맙습니다.
이 링크 확인 http://stackoverflow.com/questions/24274297/java-lang-nullpointerexception-while-trying-to-run-google-driver-example – SGC
감사합니다. 당신은 응답을 위해. 내가 설명하는 문제는 인증에 대한 것보다 사용자 계정에 대한 읽기/쓰기 권한을 더 많이 수행해야한다는 것입니다. – HBizzle