我正在开发一个无状态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
答案 0 :(得分:1)
将授权码传回您的应用后,您需要使用带有重定向URI的OAuth 2流。在Dropbox Java Core SDK中,这需要您使用DbxWebAuth
。但是,DbxWebAuth
实现要求您在constructor中提供非DbxSessionStore
个csrfTokenStore
参数。
这用于阻止cross-site request forgery攻击,根据Dropbox /oauth2/authorize documentation,它链接到OAuth 2规范的相关部分以供参考。
也就是说,提供CSRF令牌的/ oauth2 / authorize上的state
参数并不是必需的,因此在技术上可以使用带有重定向URI的代码流提供state
。可以说,这是不推荐的,并且Dropbox Java Core SDK不支持。如果你真的需要这样做,你可以手动实现它,使用允许它的不同库,或者修改Dropbox Java Core SDK。请注意,这样做可能会打开您的应用程序以进行跨站点请求伪造攻击。