ert*_*ert 6 java token dropbox
在阅读了官方 Dropbox 文档后,我设法编写了此代码以使用 DropBox 对用户进行身份验证并获取他的访问令牌。用户必须复制和粘贴令牌,我不喜欢这一步,我注意到一些开发人员可以使用类的withRedirect()方法DbxWebAuth。有一个使用重定向的示例,但它适用于 Web 应用程序,我无法将其调整为我的桌面应用程序。你们中有人与此有关吗?这是目前我的代码
public static void main(String[] args) throws Exception {
String accessToken = "";
String userLocale = null;
DbxRequestConfig requestConfig = new DbxRequestConfig("text-edit/0.1", userLocale);
DbxAppInfo appInfo = new DbxAppInfo("myString", "myString");
DbxWebAuth auth = new DbxWebAuth(requestConfig, appInfo);
DbxWebAuth.Request requestAuth = DbxWebAuth.newRequestBuilder().withNoRedirect().build();
String authorizeUrl = auth.authorize(requestAuth);
System.out.println("1. Go to " + authorizeUrl);
System.out.println("2. Click \"Allow\" (you might have to log in first).");
System.out.println("3. Copy the authorization code.");
//Abrimos el enlace de autenticación del paciente en la carpeta de DropBox
try {
URL authenticationURL = new URL(authorizeUrl);
Desktop.getDesktop().browse(authenticationURL.toURI());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JFrame frame1 = new JFrame("InputDialog Example #2");
frame1.setAlwaysOnTop(true);
String code = JOptionPane.showInputDialog(frame1, "Insert verification code");
System.out.println(code);
code = code.trim();
try {
DbxAuthFinish authFinish = auth.finishFromCode(code);
accessToken = authFinish.getAccessToken();
} catch (Exception e) {
}
}
Run Code Online (Sandbox Code Playgroud)
我很懒,没有在这里编写任何代码,而是在回调方案中,您向身份验证服务器提供重定向 URL,该 URL 由您的系统浏览器通过 301 重定向加载,这意味着 Dropbox 服务器实际上不需要为了到达您的回调 URL,他们所做的只是重定向您的客户端。很多时候,人们在测试 Web 应用程序时使用 localhost 作为回调 URL。
这意味着您实际上不需要运行 Web 服务器来接收回调 URL 中传递的参数(即您的访问令牌),因为您已经拥有在来自服务器的 301 响应。尽管有一些小型 Web 服务器(例如 nanohttpd)很容易嵌入到您的代码中,以防这一切听起来有点太复杂。
在代码中嵌入 Web 服务器来侦听回调的替代方法:
方法1:在像您这样的情况下,如果您不想设置Web服务器来侦听端口,那么您的本机应用程序只需要声明一些URL空间,以便系统不会在本机中加载它浏览器而是将 URL 传递到您的本机应用程序。如果这将是一个 Windows 应用程序,您可以注册一个自定义协议,以便拦截使用您的应用程序向该端点发出的请求。您也可以使用 iOS 和 Android 执行此操作。
方法 2:我的选择另一种方法是使用 Unirest 或 httpclient 等客户端与 Dropbox 身份验证服务器进行初始联系,而不是像上面的 try 块中那样使用桌面浏览器。这将允许您从 Dropbox 服务器获取响应并解析它。但是,如果您绝对需要访问 Dropbox 网页让用户输入其凭据(即您无法确定如何通过 httpclient 传递凭据),那么您可能会陷入使用系统浏览器和方法 1 的困境。
下面是使用 httpclient 发出请求的示例,选择不遵循 301/302 重定向,然后从返回的标头中解析重定向位置(带有访问令牌的 URL)。
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |