2011-12-16 132 views
1

我們正在開發Android應用程序以從Google Doc下載文件。我們能夠使用Google Docs List API列出文件。此外,我們能夠從谷歌文檔下載電子表格文件。但是當我們試圖從谷歌文檔下載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

您的代碼段仍不會顯示您設置範圍的位置。 – 2012-04-07 04:26:03

+0

您不能將PDF導出爲文本。即使使用exportFormat = txt,您仍然可以獲得PDF內容。至於您的錯誤,您可能缺少您的OAuth令牌中的「文檔」或「PDF /文件下載」範圍;這些不同於訪問電子表格所需的「電子表格」範圍。 – technomage 2012-07-05 13:15:40

回答

1

我認爲您在授權令牌時沒有請求正確的作用域。爲此,你應該要求令牌的範圍是:

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

你只是讓我認識到錯誤被引入到我們的文檔的授權部分,去掉docs.googleusercontent.com範圍。我會補充回來。