在我看来,Dropbox API无法告知链接的Dropbox帐户的剩余可用空间.我只能通过使用.accountInfo()调用来获取用户的总配额.
我看到的唯一方法是迭代用户在Dropbox中存储的所有文件,并总结其大小,然后从总配额中减去此金额.这个解决方案似乎非常糟糕和缓慢,有没有更好的方法呢?
作为旁注,我尝试在Android上执行此操作,但我不认为这是一个依赖于平台的问题.
我在这里有这个奇怪的问题,我立即通过Dropbox获取令牌并尝试测试它,这个消息抛出异常:
HTTP状态401 {"错误":"给定的OAuth 2访问令牌不存在或已过期."}
为什么Dropbox令牌会在生成后立即过期?
让我告诉你我的应用程序的流程:
用户看到此屏幕:

其中包含以下相关的PHP代码:
require "../../includes/dropbox-sdk/Dropbox/autoload.php";
require "../../includes/config.php";
session_start();
session_regenerate_id();
$appInfo = Dropbox\AppInfo::loadFromJsonFile("../../includes/dropbox-sdk/Dropbox/app-info.json");
$webAuth = new Dropbox\WebAuthNoRedirect($appInfo, "Mignori-Box/1.0");
$authorizeUrl = $webAuth->start();
Run Code Online (Sandbox Code Playgroud)
好吧,我们使用官方SDK生成一个Dropbox授权URL,这似乎工作正常,用户看到这个屏幕:

他们点击允许,Dropbox为他们提供授权令牌,然后他们将其粘贴到我的网站,然后提交.这是处理表单的代码:
try
{
$accessToken = $_POST['authorization_code'];
$dbxClient = new Dropbox\Client($accessToken, "Mignori-Box/1.0");
$accountInfo = $dbxClient->getAccountInfo();
}catch(Exception $e)
{
echo "<div class=\"alert alert-danger\">";
echo "<strong>An error has occurred.</strong><br>" . $e -> getMessage();
echo "</div>";
}
Run Code Online (Sandbox Code Playgroud)
但无论令牌有多近,当用户提交令牌时,都会调用catch并显示警告.即使令牌是在几秒钟之前生成的,这种情况也会发生.
有人可以告诉我什么是错的吗?
我提交的应用程序使用Dropbox SDK将照片从iPhone上传到dropbox中的指定文件夹.因为我不知道我不知道如何/什么/如果dropbox sdk使用cyroptograhy.你能帮我回答下列问题吗?:
您的应用是否设计为使用加密技术,还是包含或包含加密技术?(即使您的应用仅使用iOS或OS X中提供的加密,也请选择"是".)
如果是这样,您的应用程序是否有资格获得美国出口管理条例第2部分第5类规定的任何豁免?确保您的应用符合此处列出的豁免条件.您有责任对产品进行适当的分类.对您的应用进行错误分类可能会导致您违反美国出口法律,并可能导致您受到处罚,包括您的应用从App Store中删除.在回答问题之前,请仔细阅读常见问题解答.如果您的应用程序的加密是:(a)专为医疗最终用途而设计(b)仅限于知识产权和版权保护(c)仅限于身份验证,数字签名或解密,您可以为问题#2选择"是" (d)为银行业务或"货币交易"而特别设计和限制的数据或文件; 或(e)限于"固定"数据压缩或编码技术如果您的应用程序符合美国出口管理条例第2部分第5类注释4中提供的描述,您也可以选择是.
如果没有,您的应用程序是否实施了一个或多个加密算法,这些加密算法是专有的,或者尚未被国际标准机构(例如IEEE,IETF,ITU等)接受为标准?
等等.
我正在编写一个需要使用 Dropbox 网络钩子的程序。我还没有找到任何已经到位的 Go 实现,所以我决定写我的。不幸的是,它似乎不起作用。
我认为这里的问题是hmac,因为我很可能做错了什么,但我似乎无法理解这里的问题到底在哪里。任何的想法?
以下是我所拥有的:
package dboxwebhook
import (
"bytes"
"crypto/hmac"
"crypto/sha256"
"errors"
"io"
"io/ioutil"
"log"
)
type Signature struct {
AppSecret []byte
Signature []byte
}
func (w *Signature) Check(reqBody io.ReadCloser) error {
if bytes.Compare(w.Signature, nil) == 0 {
return errors.New("DropBox signature doesnt exist")
}
// building HMAC key (https://golang.org/pkg/crypto/hmac/)
mac := hmac.New(sha256.New, w.AppSecret)
requestBody, err := ioutil.ReadAll(reqBody)
if err != nil {
return err
}
mac.Write(requestBody)
expectedMac := mac.Sum(nil)
log.Println(w.AppSecret)
log.Println(expectedMac)
log.Println(w.Signature)
// compare if …Run Code Online (Sandbox Code Playgroud) 我正在尝试为批准我的应用程序的用户获取文件和文件夹(现在我在他批准后拥有令牌)。
我能够通过获取用户 dbid 并将其与“Dropbox-API-Select-User”标头一起使用来扫描团队中的所有用户,但有时我只想扫描当前用户(批准我的应用程序的用户)。
我暂时无法获得他的 dbid,当我尝试在没有“Dropbox-API-Select-User”标头的情况下访问“ https://api.dropboxapi.com/2/users/get_current_account ”时,我得到了消息表明此标头丢失。
有什么想法如何在没有 dbid 的情况下访问他的文件/文件夹,或者以某种方式获取他的 dbid?也许在授权过程中?或者其他一些API?
我正在使用这个 API: https: //www.dropbox.com/developers/documentation/http/documentation
我获取当前帐户的请求:https ://api.dropboxapi.com/2/users/get_current_account
我的标题:
内容类型:application/json
授权:不记名 my_token
我收到此错误:调用 API 函数“users/get_current_account”时出错:缺少必需的 X-Dropbox-Perform-As-Team-Member 标头
谢谢。
我正在使用此代码下载文件,它工作正常.
// Download a file
let destination : (NSURL, NSHTTPURLResponse) -> NSURL = { temporaryURL, response in
let fileManager = NSFileManager.defaultManager()
let directoryURL = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
// generate a unique name for this file in case we've seen it before
let UUID = NSUUID().UUIDString
let pathComponent = "\(UUID)-\(response.suggestedFilename!)"
return directoryURL.URLByAppendingPathComponent(pathComponent)
}
client.files.download(path: "/hello.txt", destination: destination).response { response, error in
if let (metadata, url) = response {
print("*** Download file ***")
let data = NSData(contentsOfURL: url)
print("Downloaded file name: \(metadata.name)") …Run Code Online (Sandbox Code Playgroud) 我想上传大于 150mb 的文件。
在 Dropbox API V2 文档中,它说您应该启动上传会话。
文档说您不能发送超过 150mb 数据的 POST,但我不确定如何使用 upload_session API 实现这一点。
我正在使用 Dropbox.Net API v2.0 将文档上传到 Dropbox:
private async Task Upload(DropboxClient dbx, string localPath, string remotePath)
{
using (var fileStream = File.Open(localPath, FileMode.Open))
{
var s = await dbx.Files.UploadAsync(remotePath, body: fileStream);
}
}
Run Code Online (Sandbox Code Playgroud)
如何获取已上传文档的共享链接?
我已经尝试过:
await dbx.Sharing.GetSharedLinkFileAsync(remotePath);
Run Code Online (Sandbox Code Playgroud)
但出现以下错误:
<Message>An error has occurred.</Message>
<ExceptionMessage>shared_link_not_found/.</ExceptionMessage>
Run Code Online (Sandbox Code Playgroud)
我正在想一些东西,但不确定是什么,有什么想法吗?
我正在尝试将用户添加到我的 Dropbox 应用的开发用户中。为此,我似乎必须连接到端点/token/from_oauth1或/和/oauth2/token生成它们的访问令牌。我是使用 API 的新手,并且正在努力理解如何在我的代码中实现 OAuth/OAuth2。我正在使用requests图书馆这样做。
这是我尝试过但对我不起作用的示例:
import requests
import json
url = "https://api.dropboxapi.com/2/auth/token/from_oauth1"
headers = {
"Authorization": "Basic <APP_KEY>:<APP_SECRET>",
"Content-Type": "application/json"
}
data = {
"oauth1_token": "<DROPBOX_USERNAME>",
"oauth1_token_secret": "<DROPBOX_PASSWORD>"
}
r = requests.post(url, headers=headers, data=json.dumps(data))
Run Code Online (Sandbox Code Playgroud)
但我收到错误 b'Error in call to API function "auth/token/from_oauth1": Invalid value in HTTP header "Authorization": "Basic <APP_KEY>:<APP_SECRET>"'
APP_KEY并且APP_SECRET显然替换为其相应的字符串。
我打电话/token/from_oauth1而不是/oauth2/token. 如果是这样,这个请求我哪里出错了?
我正在尝试创建一个闪亮的应用程序,它使用包 rdrop2 链接到我的保管箱。
我已成功部署该应用程序,它按计划运行了大约 4 个小时。但是,我需要持久的离线访问。Dropbox 帮助页面显示我需要“刷新令牌”。
目前,为了获取我正在使用的令牌:
library(rdrop2)
token <- drop_auth() # gets credentials
saveRDS(token, "droptoken.rds") # saves credentials
token<-readRDS("droptoken.rds") # read in credentials
drop_auth(new_user = FALSE,
cache = TRUE,
rdstoken = "droptoken.rds")
ui <- # some UI code
server <- function(input, output,session) {
# some server code
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
这将创建一个带有“sl”的令牌。访问令牌(短期),到期时间为 14400,即 4 小时。4 小时后,该应用程序由于“未经授权的 HTTP 401”错误而不再运行。
任何人都可以为我提供有关如何调整此代码以获取刷新令牌的帮助吗?
注意:dropbox 不再允许无期限的令牌(截至 2021 年 9 月),因此我需要沿着刷新令牌路线进行。
dropbox-api ×10
dropbox ×4
android ×1
c# ×1
dropbox-php ×1
encryption ×1
go ×1
hmac ×1
java ×1
javascript ×1
node.js ×1
oauth ×1
oauth-2.0 ×1
php ×1
python ×1
r ×1
rdrop2 ×1
sha256 ×1
swift ×1
webhooks ×1