1

我正在将 DropBox 集成到基于 Java 的应用程序中。以下代码在独立模式下执行时可以正常工作。

private String APP_KEY = "APP_KEY";
private String APP_SECRET = "APP_SECRET";
private AccessType ACCESS_TYPE = AccessType.APP_FOLDER;

AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
WebAuthSession session = new WebAuthSession(appKeys, ACCESS_TYPE);


WebAuthInfo authInfo = session.getAuthInfo("callbackURL");

RequestTokenPair pair = authInfo.requestTokenPair;
String url = authInfo.url;
Desktop.getDesktop().browse(URL(url).toURI());
session.retrieveWebAccessToken(pair);

AccessTokenPair tokens = session.getAccessTokenPair();

在独立模式下,这段代码将我重定向到 DropBox 登录页面,用户将授权应用程序,然后控件返回到“callbackURL”中提到的页面。

当我实际运行我的网站时,我使用相同的补丁。我有一个链接说“现在链接到 DropBox”。单击该链接后,控件将通过 REST 调用传递给服务器以执行上述代码。但它卡在代码行上,它说,

Desktop.getDesktop().browse(URL(url).toURI());

当正确传递获取authInfo()所需的所有参数时。

我无法确定我哪里出错了。任何帮助将不胜感激。

4

1 回答 1

0

由于您是一个 Web 应用程序,因此您无法调用Desktop.getDesktop()(这仅在桌面应用程序的上下文中才有意义)。

您应该将用户重定向到 Dropbox(即到您在语句中收到的 URL authInfo.url),使用类似的东西response.sendRedirect("callbackURL");或在客户端使用 JavaScript 来设置href链接。

然后,Dropbox 会将用户重定向回您的应用程序(即您指定为“callbackURL”的 URL),您应该有一个 servlet 解析 Dropbox 的响应(此处有更多信息- 请查看“RETURNS”部分),然后获取 _access_token_ (如此处所述)。
(此时您可能希望将其与其余必要数据一起存储在某个地方(例如,在会话范围内)。)

于 2013-05-24T09:41:00.810 回答