2011-12-16 2 views
1

Google 문서 도구에서 파일을 다운로드하기 위해 Android 애플리케이션을 개발 중입니다. Google 문서 목록 API를 사용하여 파일을 나열 할 수있었습니다. 또한 Google 스프레드 시트 파일을 Google 워드 프로세서에서 다운로드 할 수있었습니다. 하지만 Google 문서 도구에서 pdf 파일을 다운로드하려고하면 항상 401 오류가 반환됩니다. 이것은 파일을 다운로드 할 때 사용되는 코드입니다.Google 문서 목록 API PDF 파일 다운로드가 작동하지 않음 (Android)

CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(C.OAuth.CONSUMER_KEY, C.OAuth.CONSUMER_SECRET); 

consumer.setMessageSigner(new HmacSha1MessageSigner()); 

consumer.setTokenWithSecret(token, secret); 

......... 

String url1 = consumer.sign(obj.url+"&exportFormat=txt"); // Create complete url 

get.setURI(URI.create(url1)); 

response = client.execute(get); 

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
{ 
    Log.v("GDATA MAIN", "not error"); 
} 
else 
{ 
    Log.v("GDATA MAIN", "error"+response.getStatusLine().getStatusCode()); 
} 

파일을 다운로드 할 때 생성되는 URL입니다.

https://doc-04-0s-docs.googleusercontent.com/docs/securesc/5pv2dhsk6q500b1vl99u2gr2gvpqfifr/d8oihkmccnh39ie9io5bhqaf3jof7t16/1324030500000///0B4royw-5u0TDNGU3ZjZiZTAtN2ZhNi00YWE3LWEwZGEtMTMwNWJhMGE1YWRk?h=16653014193614665626&e=download&gd=true&exportFormat=txt&oauth_signature=3lfP0reuJhMWstxMKMAlJh%2BZ7Ug%3D&oauth_token=1%2FQnEPtLXrhT8q6yk8oLoI2ZPyZzQptbB4mQrBJf-HJfM&oauth_consumer_key=418002400742-nrh3mt73pfvl6flshi8f7uvki49ofqj8.apps.googleusercontent.com&oauth_version=1.0&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1324031523&oauth_nonce=351034367494689817

모든 추측

, 왜 우리는 PDF를 다운로드 할 수 없지만, 스프레드 시트 형식은 작업?

+0

코드 스 니펫은 범위를 설정하는 위치를 여전히 표시하지 않습니다. –

+0

PDF를 텍스트로 내보낼 수 없습니다. exportFormat = txt를 사용하더라도 여전히 PDF 콘텐츠를 얻을 수 있습니다. 오류에 대해서는 OAuth 토큰에 '문서 도구'또는 'PDF/파일 다운로드'범위가 누락되었을 수 있습니다. 이는 스프레드 시트에 액세스하는 데 필요한 "스프레드 시트"범위와 구별됩니다. – technomage

답변

1

토큰을 승인 할 때 올바른 범위를 요청하지 않는다고 생각합니다. 당신이 토큰을 요청해야 대상이되는 범위는 다음과 같습니다

https://docs.google.com/feeds/ 
https://spreadsheets.google.com/feeds/ 
https://docs.googleusercontent.com/ 

당신은 단지 docs.googleusercontent.com 범위를 제거, 내가 버그가 우리 문서의 인증 섹션에 소개 된 것을 깨닫게했다. 나는 그것을 다시 추가 할 것이다.

+0

이미 같은 범위를 사용하고,이 내 범위와 요청 URL을 \t 최종 보호 정적 문자열 \t 범위입니다 \t \t \t \t \t = "https://docs.google.com/feeds/ https://spreadsheets.google.com/feeds/https://docs.googleusercontent.com/ ";//"https://spreadsheets.google.com/feeds/ "; \t \t 최종 보호 정적 스트링 \t GET_REQUEST_TOKEN_URL \t = "https://www.google.com/accounts/OAuthGetRequestToken?scope="+ URLEncoder.encode (SCOPE) \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t + "& xoauth_displayname ="+ URLEncoder.encode ("TEST App"); – Anwer

+0

질문을 편집하고 사용중인 코드의 전체 스 니펫을 추가 할 수 있습니까? –

+0

댓글에 붙여 넣은 코드를 읽을 수없고 올바르지 않은 것 같습니다. 질문을 수정하십시오. –