2013-02-26 4 views
4

Google 스프레드 시트 액세스를 위해 oauth2 인증을 위해 자바 라이브러리를 사용하고 있습니다.Google 스프레드 시트로 OAuth2 인증 문제가 발생했습니다.

내가 OAuth2를 인증 코드 아래 사용하고는 :

credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) 
    .setJsonFactory(JSON_FACTORY) 
    .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
    .setTokenServerEncodedUrl("https://accounts.google.com/o/oauth2/token") 
    .setServiceAccountScopes("https://www.googleapis.com/auth/drive", "https://spreadsheets.google.com/feeds", "https://docs.google.com/feeds") 
    .setServiceAccountPrivateKeyFromP12File(new File("xxxxx-privatekey.p12")).build(); 

스프레드 시트를 읽는 코드 아래 사용 "자격 증명"점점 후 : 위의 코드를 실행

SpreadsheetService service = new SpreadsheetService(
         "MySpreadsheetIntegration"); 
service.setOAuth2Credentials(credential); 
URL SPREADSHEET_FEED_URL = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full");   
SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL, SpreadsheetFeed.class); 
System.out.println(feed.getTotalResults()); 

나에게 다시 총 결과 0을 제공합니다.

내가 사용하는 경우 :

service.setUserCredentials("email", "password"); 

대신 oauth2 인증을 사용하면 정확한 결과를 얻을 수 있습니다. OAuth2 인증에 어떤 문제가 있는지 잘 모릅니다. 또한 "자격 증명"개체에서 "액세스 토큰"을 인쇄 할 때 유효한 액세스 토큰을 인쇄합니다.

답변

2

내가 사용

spreadsheetService = new SpreadsheetService("cellmaster.com.au-v0.2"); 
spreadsheetService.setHeader("Authorization", "Bearer " + accessToken); 

보다는 :

spreadsheetService = new SpreadsheetService("cellmaster.com.au-v0.2"); 
spreadsheetService.setOAuth2Credentials(credential); 

도 내가 새로 고침 토큰 코드를 추가했다. 액세스 토큰은 곧 만료됩니다. 그러나 새로 고침 토큰은 예상대로 작동합니다.

+0

spreadsheetService.setHeader ("Authorization", "Bearer"+ accessToken); setHeader (String, String) 유형이 SpreadsheetService 유형에 대해 정의되지 않았습니다. gdata-spreadsheet-3.0.jar을 사용하고 있습니다. lib 동일한 버전 –

+0

을 사용할 수 있습니까? core-1.47.1.jar이 제가 사용하는 Jar 파일 인 것처럼 보입니다. https : /developers.google.com/gdata/javadoc/com/google/gdata/client/Service#setHeader(java.lang.String, java.lang.String) - 이메일을 보내는 데 jar 파일 문제가 발생하여 비표준 조합의 비트. -하지만 요즘에는 구글 시트처럼 모든 오픈 소스를 사용하는 ethercalc를 사용합니다. – eddyparkinson

관련 문제