2011-12-16 15 views
1

Google DocsからファイルをダウンロードするためのAndroidアプリケーションを開発中です.Google Docs List APIを使用してファイルを一覧表示することができました。また、Googleドキュメントからスプレッドシートファイルをダウンロードすることもできました。しかし、私たちがgoogle docsからpdfファイルをダウンロードしようとすると、常に401エラーが返されます。これは、ファイルのダウンロードに使用されているコードです。Google Docs List 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トークンに "Docs"または "PDF/File download"スコープがありません。これらはスプレッドシートにアクセスするために必要な「スプレッドシート」のスコープとは異なります。 – technomage

答えて

1

トークンを承認するときに正しいスコープを要求していないと思います。あなたがトークンを要求すべき対象のスコープは、以下のとおりです。

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

あなたは私だけでバグがdocs.googleusercontent.comスコープを削除する、当社の文書の認証部分に導入されたことを実感しました。私はそれを追加します。

+0

私はすでに同じスコープを使用しています、これは私のスコープと要求URLです\t最終保護静的な文字列\t SCOPE \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

コメントに貼り付けたコードは読み取り不可能で、正しく表示されません。あなたの質問を修正してください。 –

関連する問題