- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 Dropbox java API 让我的 java 应用程序上传文件。不知何故,我最终遇到了我无法解决的相同 SSL 错误。有什么建议吗?
我使用了这段代码 (http://aaka.sh/patel/2011/12/20/authenticating-dropbox-java-api/)
public class DropboxTest {
// App key & secret that Dropbox's developer website gives your app
private static final String APP_KEY = "myAppKey";
private static final String APP_SECRET = "myAppSecret";
// Define AccessType for DropboxAPI object
final static private AccessType ACCESS_TYPE = AccessType.APP_FOLDER;
private static DropboxAPI<WebAuthSession> mDBApi;
public static void main(String[] args) throws Exception{
// Initialize the goods/session
AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
WebAuthSession session = new WebAuthSession(appKeys, ACCESS_TYPE);
// Initialize DropboxAPI object
mDBApi = new DropboxAPI<WebAuthSession>(session);
// Get ready for user input
Scanner input = new Scanner(System.in);
// Open file that stores tokens, MUST exist as a blank file
File tokensFile = new File("TOKENS");
System.out.println("Enter 'a' to authenticate, or 't' to test reauthentication: ");
String command = input.next();
if(command.equals("a")){
try {
// Present user with URL to allow app access to Dropbox account on
System.out.println("Please go to this URL and hit \"Allow\": " + mDBApi.getSession().getAuthInfo().url);
AccessTokenPair tokenPair = mDBApi.getSession().getAccessTokenPair();
// Wait for user to Allow app in browser
System.out.println("Finished allowing? Enter 'next' if so: ");
if(input.next().equals("next")){
RequestTokenPair tokens = new RequestTokenPair(tokenPair.key, tokenPair.secret);
mDBApi.getSession().retrieveWebAccessToken(tokens);
PrintWriter tokenWriter = new PrintWriter(tokensFile);
tokenWriter.println(session.getAccessTokenPair().key);
tokenWriter.println(session.getAccessTokenPair().secret);
tokenWriter.close();
System.out.println("Authentication Successful!");
}
} catch (DropboxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if(command.equals("t")){
Scanner tokenScanner = new Scanner(tokensFile); // Initiate Scanner to read tokens from TOKEN file
String ACCESS_TOKEN_KEY = tokenScanner.nextLine(); // Read key
String ACCESS_TOKEN_SECRET = tokenScanner.nextLine(); // Read secret
tokenScanner.close(); //Close Scanner
//Re-auth
AccessTokenPair reAuthTokens = new AccessTokenPair(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET);
mDBApi.getSession().setAccessTokenPair(reAuthTokens);
System.out.println("Re-authentication Sucessful!");
//Run test command
System.out.println("Hello there, " + mDBApi.accountInfo().displayName);
}
}
}
以 SSL 异常结束:
com.dropbox.client2.exception.DropboxSSLException: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at com.dropbox.client2.RESTUtility.execute(RESTUtility.java:416)
at com.dropbox.client2.RESTUtility.execute(RESTUtility.java:337)
at com.dropbox.client2.RESTUtility.streamRequest(RESTUtility.java:192)
at com.dropbox.client2.session.WebAuthSession.setUpToken(WebAuthSession.java:218)
at com.dropbox.client2.session.WebAuthSession.getAuthInfo(WebAuthSession.java:158)
at com.dropbox.client2.session.WebAuthSession.getAuthInfo(WebAuthSession.java:128)
at DropboxTest.main(DropboxTest.java:45)
Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:399)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:143)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
at com.dropbox.client2.RESTUtility.execute(RESTUtility.java:385)
... 6 more
最佳答案
想通了。我在 OSX 上使用 OpenJDK。我使用 -Djavax.net.debug=ssl
运行 JVM 进行调试,最终出现了根异常
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
经过一些研究,我在这里找到了解决方案: http://architecturalatrocities.com/post/19073788679/fixing-the-trustanchors-problem-when-running-openjdk-7
现在工作正常!
关于java - 使用 Dropbox Java api : DropboxSSLException: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155971/
我想将文件从服务器推送到我自己的 Dropbox。我可以在服务器上存储 API token 甚至(虽然不情愿)帐户密码。我不想在服务器上安装 Dropbox。 我还需要在 Dropbox 开发者主页创
有没有办法通过 Dropbox 选择器获取用于共享文档的短网址? 最佳答案 不,不像 Dropbox Core API , Dropbox Chooser不提供获取短 URL 的能力。 当然,这并不妨
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我正在尝试开发一个使用某种云存储的应用程序。我认为 dropbox 非常适合使用。我已经有了我的应用 key 和应用 key 。 在他们为 DBRoulette 提供的示例中,您通过外部 GUI 登录
我正尝试在我的网络应用程序中迁移到 dropbox-api v2。目前我有打开弹出窗口的实现,用户连接到他/她的保管箱,我得到 token 。我用它来访问用户在后续步骤中在 Dropbox.choos
我正尝试在我的网络应用程序中迁移到 dropbox-api v2。目前我有打开弹出窗口的实现,用户连接到他/她的保管箱,我得到 token 。我用它来访问用户在后续步骤中在 Dropbox.choos
据我所知Zapier基本使用Webhooks将服务相互链接。支持的服务之一是 Dropbox .但是 Dropbox(仍然)不支持 webhook。 (即:Dropbox 无法向选择的任意 webho
Dropbox 是否可以在文件更改时发出通知,即新上传的到达或文件已更改。 最佳答案 正如 Kannan 所指出的,有一个名为 /delta 的新 API 端点。这比轮询或 RSS 更好。 这也可以与
Dropbox Rest api,在函数metatada中有一个名为“hash”的参数https://www.dropbox.com/developers/reference/api#metadata
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我需要用户授予我的应用访问他们 Dropbox 的权限,但我非常希望他们不必离开我的网站然后再回来。我所知道的身份验证 API 要求用户登录到他们的 Dropbox 帐户,并且他们在 Dropbox
是否可以在拥有该应用程序的所有用户帐户之间共享应用程序保存的数据? 最佳答案 这不是受支持的操作;数据存储 API 实际上是作为本地存储的同步替代品,而不是作为访问单个共享数据库的方式。 更新:现在支
问题是如何在中列出最近修改过的文件保管箱 帐户使用他们的 API? 保管箱 web UI 可以显示 recently changed files 的摘要,但我在他们的 API documentatio
如何使用 dropbox api 编辑文件或文件夹名称? 我正在使用这个引用: https://www.dropbox.com/developers/core/docs 还有什么吗? 这可能吗? 最佳
我正在尝试使用他们的 java API(版本 2-beta-4)将一些文件上传到保管箱,但其中一些文件具有相同的名称。 我想知道的是:我发送文件(例如“file.txt”)到保管箱的原因是什么,该文件
在the document of Dropbox Chooser我们可以从 files[0].link 获取共享页面 url,但我们需要直接下载链接。我如何获得它? 最佳答案 我在 the forum
我正在尝试将一些文件从一个文件夹移动到另一个文件夹。 这是我的 curl 请求: curl -X POST https://api.dropboxapi.com/2/files/move \ --
我有一个网络应用程序,用户可以在其中上传他的 Logo 图片 使用 dropbox api 我可以将文件保存到一个很棒的 dropbox 文件夹中 但是我想获取下载链接,以便使用我的 angular
我需要一个简单的网络表单,它还可以让人们上传一些 pdf。我想我可以做的(因为上传文件的大小和数量)是将这个应用程序的后端绑定(bind)到我的 Dropbox 帐户或我的 box.com 帐户。两种
我是一名优秀的程序员,十分优秀!