使用手册获取 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。请注意,这样做可能会使您的应用程序受到跨站点请求伪造攻击。
我正在开发无状态 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。请注意,这样做可能会使您的应用程序受到跨站点请求伪造攻击。