- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试将我的 Android 4+ 连接到 Dropbox。我正在使用 Dropbox 提供的最新版本的核心 API。
一切正常,直到我尝试在用户使用 dropboxAPI.getSession().startOAuth2Authentication(activity)
验证访问权限后返回到我的应用程序时保存用户 key 和 token 。
当用户在身份验证后返回到我的应用程序时,以下代码应保存 key 和 token :
public boolean completeLogInAfterAuthentication() {
AndroidAuthSession session = dropboxAPI.getSession();
if (session.authenticationSuccessful()) {
try {
// Mandatory call to complete the auth
session.finishAuthentication();
// Store it locally in our app for later use
TokenPair tokens = session.getAccessTokenPair();
saveSessionKeys(tokens.key, tokens.secret);
return true;
} catch (IllegalStateExceptione) {
Log.d("MyLog", "Couldn't authenticate with Dropbox:" + e.getLocalizedMessage());
Log.d("MyLog", "Error authenticating", e);
}
}
return false;
}
这正是 Dropbox 提供的 DBRoulett 演示中使用的代码。 问题是,session.getAccessTokenPair()
返回 null。
因此,我无法存储任何 key 或 token ,并且每次启动应用程序时用户都必须重新登录。我该如何解决这个问题?
我找到的所有信息只是说,getAccessTokenPair()
可能会因 IllegalStateException
而失败,但这里不是这种情况。返回 null 的情况没有任何地方描述。知道我能做什么吗?
最佳答案
getAccessTokenPair
用于获取 OAuth 1 访问 token (和 secret )。但是您使用的是 OAuth 2,所以您需要 getOAuth2AccessToken
。来自教程 ( https://www.dropbox.com/developers/core/start/android ):
protected void onResume() {
super.onResume();
if (mDBApi.getSession().authenticationSuccessful()) {
try {
// Required to complete auth, sets the access token on the session
mDBApi.getSession().finishAuthentication();
String accessToken = mDBApi.getSession().getOAuth2AccessToken();
} catch (IllegalStateException e) {
Log.i("DbAuthLog", "Error authenticating", e);
}
}
}
这与 DBRoulette 示例中的大致相同,尽管它同时具有 OAuth 1 和 OAuth 2 的代码:
private void storeAuth(AndroidAuthSession session) {
// Store the OAuth 2 access token, if there is one.
String oauth2AccessToken = session.getOAuth2AccessToken();
if (oauth2AccessToken != null) {
SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
Editor edit = prefs.edit();
edit.putString(ACCESS_KEY_NAME, "oauth2:");
edit.putString(ACCESS_SECRET_NAME, oauth2AccessToken);
edit.commit();
return;
}
// Store the OAuth 1 access token, if there is one. This is only necessary if
// you're still using OAuth 1.
AccessTokenPair oauth1AccessToken = session.getAccessTokenPair();
if (oauth1AccessToken != null) {
SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
Editor edit = prefs.edit();
edit.putString(ACCESS_KEY_NAME, oauth1AccessToken.key);
edit.putString(ACCESS_SECRET_NAME, oauth1AccessToken.secret);
edit.commit();
return;
}
}
关于Android Dropbox API - 身份验证成功后无法保存用户 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25447633/
我想将文件从服务器推送到我自己的 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 帐户。两种
我是一名优秀的程序员,十分优秀!