如何使用oauth下载dropbox文件

时间:2013-01-29 11:44:12

标签: oauth

我正在使用oauth验证dropbox并在获取access_token之后从dropbox下载文件我使用以下签名从dropbox下载文件,传递root,文件路径,consumerKey和oauth_token以及signature_method as PLAINTEXT并且收到错误

{"error": "Bad oauth_signature for oauth_signature_method 'PLAINTEXT'"}

使用签名如下: https://api-content.dropbox.com/1/files?oauth_consumer_key=twcek2m7cxtantc&oauth_signature_method=PLAINTEXT&oauth_token=1jczc39y7rn1265&oauth_version=1.0&path=test%2Fut.txt&root=dropbox&oauth_signature=fbs34nykryouuj1%2526gbwmn3e27g97cfy

我该怎么做才能解决此错误?

1 个答案:

答案 0 :(得分:1)

我正在搜索这个并发现:

1)PLAINTEXT方法不提供任何安全保护,并且应该只在HTTPS等安全通道上使用。它不使用签名基本字符串。

2)服务提供商声明支持所有请求的HMAC-SHA1签名方法,而PLAINTEXT仅支持安全(HTTPS)请求。

3)当与PLAINTEXT签名一起使用时,OAuth协议不会尝试保护用户凭据免受窃听者或中间人攻击。 PLAINTEXT签名算法仅用于与传输层安全机制(如TLS或SSL)一起使用,后者确实提供了这种保护。如果传输层保护不可用,则不应使用PLAINTEXT签名方法。

您可以参考此链接http://oauth.net/core/1.0/#anchor22

您还可以检查您的密钥是否正确

使用以下未加密的值设置签名协议参数:

oauth_signature_method:设置为PLAINTEXT。 oauth_signature:设置为oauth_consumer_secret参数的连接编码值和oauth_token_secret参数的值。如果值包含。字符(ASCII码46),必须编码为%2E。值由a分隔。字符(ASCII码46),即使是空的。结果绝不能再次编码。 例如,如果Consumer Key为dj.9rj $ 0jd78jf88且Token Secret为jjd999(j88ui.hs3,则编码值为:

消费者密钥:dj%2E9rj%240jd78jf88 令牌秘密:jjd999%28j88ui%2Ehs3 并且oauth_signature值是dj%2E9rj%240jd78jf88.jjd999%28j88ui%2Ehs3。此值不再编码,并在HTTP请求中用作它。如果令牌密钥为空,则值为dj%2E9rj%240jd78jf88。 (保留分隔符。)