通过手动“复制和粘贴”获取Dropbox授权码

时间:2015-09-25 04:29:30

标签: java dropbox

我正在开发一个无状态REST API,我需要集成Dropbox Login机制,如下所述:https://www.dropbox.com/developers/core/start/java

我面临的主要问题是获取授权码。简单地说,由于应用程序的无状态特性(无会话),我无法使用cellName = "\U0f46\U0f74\U0f44\U0f0b\U0f0d"; cellSubtitle = "(\U0f62\U0f92\U0fb1\U0f53\U0f0b\U0f5a\U0f72\U0f42) \U0f21 \U0f46\U0f7a\U0f0b\U0f56\U0f60\U0f72\U0f0b\U0f63\U0fa1\U0f7c\U0f42\U0f0b\U0f5f\U0fb3\U0f0d \U0f56\U0f7c\U0f44\U0f66\U0f0b\U0f5a\U0f7c\U0f51\U0f0b\U0f51\U0f44\U0f0b\U0f62\U0f92\U0fb1\U0f0b\U0f41\U0fb1\U0f7c\U0f53\U0f0b\U0f66\U0f7c\U0f42\U0f66\U0f0b\U0f63\U0f9f\U0f7c\U0f66\U0f0b\U0f66\U0f0b\U0f63\U0f9f\U0f7c\U0f66\U0f0b\U0f60\U0f47\U0f7c\U0f42\U0f0b\U0f42\U0f72\U0f0b\U0f66\U0f92\U0f7c\U0f0b\U0f53\U0f66\U0f0b\U0f49\U0f74\U0f44\U0f0b\U0f44\U0f74\U0f0b\U0f59\U0f58\U0f0b\U0f63\U0f66\U0f0b\U0f5f\U0f72\U0f53\U0f0b\U0f58\U0f7a\U0f51\U0f0b\U0f54\U0f60\U0f72\U0f0b\U0f51\U0f7c\U0f53\U0f0b\U0f4f\U0f7a\U0f0d \n \U0f51\U0f54\U0f7a\U0f62\U0f0b\U0f53\U0f0d \U0f41\U0f44\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f0d \U0f5e\U0f72\U0f44\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f0d \U0f46\U0f74\U0f0b\U0f56\U0f7c\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f0d \U0f51\U0f40\U0f62\U0f0b\U0f61\U0f7c\U0f63\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f56\U0f0b\U0f5e\U0f7a\U0f66\U0f0b\U0f54\U0f0b\U0f63\U0f9f\U0f0b\U0f56\U0f74\U0f0d \n2. \U0f53\U0f0b\U0f5a\U0f7c\U0f51\U0f0b\U0f42\U0f5e\U0f7c\U0f53\U0f0b\U0f54\U0f60\U0f72\U0f0b\U0f51\U0f7c\U0f53\U0f0b\U0f4f\U0f7a\U0f0d \n \U0f51\U0f54\U0f7a\U0f62\U0f0b\U0f53\U0f0d \U0f53\U0f74\U0f0b\U0f56\U0f7c\U0f0b\U0f53\U0f72\U0f0b\U0f55\U0f74\U0f0b\U0f56\U0f7c\U0f0b\U0f63\U0f66\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f0d \U0f46\U0f74\U0f44\U0f0b\U0f44\U0f74\U0f60\U0f72\U0f0b\U0f51\U0f74\U0f66\U0f0d \U0f55\U0f74\U0f0b\U0f56\U0f7c\U0f0b\U0f63\U0f66\U0f0b\U0f53\U0f74\U0f0b\U0f56\U0f7c\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f0d \U0f56\U0fb1\U0f72\U0f66\U0f0b\U0f54\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f56\U0f0d \U0f56\U0f74\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f56\U0f0b\U0f5e\U0f7a\U0f66\U0f0b\U0f54\U0f0b\U0f63\U0f9f\U0f0b\U0f56\U0f74\U0f0d3. \U0f51\U0f58\U0f53\U0f0b\U0f54\U0f60\U0f58\U0f0b\U0f5e\U0f53\U0f0b\U0f54\U0f60\U0f72\U0f0b\U0f51\U0f7c\U0f53\U0f0b\U0f4f\U0f7a\U0f0d \U0f66\U0f7a\U0f58\U0f66\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f0d \U0f49\U0f58\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f0d \U0f56\U0fb3\U0f7c\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f0d \U0f40\U0fb3\U0f51\U0f0b\U0f46\U0f74\U0f44\U0f0b\U0f5e\U0f7a\U0f66\U0f0b\U0f54\U0f0b\U0f63\U0f9f\U0f0b\U0f56\U0f74\U0f0d"; 方法。并坚持使用:

NSData *data2 = [stringJoinedByNewLines2  dataUsingEncoding:NSUTF8StringEncoding];
NSString *decodevalue2 = [[NSString alloc] initWithData:data2 encoding:NSNonLossyASCIIStringEncoding];

尽管生成了代码,但没有回调,并且在允许后使用必须从Dropbox页面“复制并粘贴”授权代码。有没有办法自动化这个过程?

我的主要目标是获取授权码并将其发送回API DbxWebAuth

1 个答案:

答案 0 :(得分:1)

将授权码传回您的应用后,您需要使用带有重定向URI的OAuth 2流。在Dropbox Java Core SDK中,这需要您使用DbxWebAuth。但是,DbxWebAuth实现要求您在constructor中提供非DbxSessionStorecsrfTokenStore参数。

这用于阻止cross-site request forgery攻击,根据Dropbox /oauth2/authorize documentation,它链接到OAuth 2规范的相关部分以供参考。

也就是说,提供CSRF令牌的/ oauth2 / authorize上的state参数并不是必需的,因此在技术上可以使用带有重定向URI的代码流提供state。可以说,这是不推荐的,并且Dropbox Java Core SDK不支持。如果你真的需要这样做,你可以手动实现它,使用允许它的不同库,或者修改Dropbox Java Core SDK。请注意,这样做可能会打开您的应用程序以进行跨站点请求伪造攻击。