使用手册获取 Dropbox 授权码 "copy and paste"

Get Dropbox authorization code with manual "copy and paste"

我正在开发无状态 REST API,我需要按照此处所述集成 Dropbox 登录机制:https://www.dropbox.com/developers/core/start/java

我面临的主要问题是获取授权码。简而言之,由于应用程序的无状态性质(无会话),我无法使用 DbxWebAuth 方法。并坚持使用:

DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo);

虽然生成了代码,但没有回调,必须在允许后使用 "copy and paste" 来自 Dropbox 页面的授权代码。有没有办法使这个过程自动化?

我的主要目标是获取授权码并将其发送回 API,例如 http://my-website.com/dropbox?authorization_code={authorization_code}

将授权代码传回您的应用需要您使用带有重定向 URI 的 OAuth 2 流程。在 Dropbox Java 核心 SDK 中,这需要您使用 DbxWebAuth。然而,DbxWebAuth 实现要求您提供非空 DbxSessionStore 作为 constructor.

中的 csrfTokenStore 参数

用于防止cross-site request forgery attacks, per the Dropbox /oauth2/authorize documentation,链接到OAuth 2规范的相关部分以供参考。

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