【问题标题】:Box API get shared file results in 404Box API 获取共享文件结果为 404
【发布时间】:2015-05-03 22:13:28
【问题描述】:

已经看过 How to use box-api to get the Shared item? 和 Box 开发者文档 https://developers.box.com/docs/#shared-items。我尝试在 .NET 代码、Firefox 海报中并使用 curl 向 https://api.box.com/2.0/shared_items 发出请求。它们都导致 404。我已经验证我的文件的共享链接对任何有链接的人开放。这是我的 curl 代码(已清理):

curl https://api.box.com/2.0/shared_items -H "Authorization: Bo
xAuth api_key=xxxxxxxxxxxxxxxxxxxxx" -H "BoxApi: shared_link=https://
app.box.com/s/yyyyyyyyyyyyyyyyyyyyyyyyyyyy"

{"type":"error","status":404,"code":"not_found","help_url":"http:\/\/developers.
box.com\/docs\/#errors","message":"Not Found","request_id":"196207167555469c3017
14b"}

可能是什么问题?我尝试了错误的 api_key 并返回 401,所以我知道整个设置是正确的。

【问题讨论】:

    标签: box-api box


    【解决方案1】:

    您的 API 密钥不应包含在请求中的任何位置。我相信旧的 v1 API 中使用了这种授权形式,现在已弃用。 the docs you linked to 中有一个 cURL 示例,它显示了您的授权标头应该是什么样子:

    curl https://api.box.com/2.0/shared_items
    -H "Authorization: Bearer ACCESS_CODE"
    -H "BoxApi: shared_link=SHARED_LINK"
    

    有关如何获取进入授权标头的访问令牌的更多信息,请查看OAuth tutorial

    之所以需要身份验证,是因为 API 将在调用者权限的上下文中返回有关项目的信息。例如,如果共享链接的创建者进行 API 调用,则将返回私人信息(例如项目在其帐户中的完整路径)。如果其他用户拨打电话,则该私人信息将被忽略。

    话虽如此,您仍然可以通过直接导航到打开的共享链接来匿名下载它。如果您想了解有关链接指向的项目的更多信息,您只需要使用 API。

    【讨论】:

    • 谢谢。是的,我看到文档在标题中有承载授权。在我的例子中,它是一个公共共享链接,也就是说,任何拥有该链接的人都可以在没有登录名或密码的情况下访问该文件。为什么我必须通过 oAuth 进行身份验证并获取访问代码?重点是在我的网络应用程序中显示此类文件,而不会打扰用户登录。
    • 我添加了为什么需要身份验证的解释。
    • 感谢 Greg 提供更多详细信息。但是,请考虑这个用例:我想从我的网站提供文件,而我的网站的访问者不知道这些文件存储在 Box 中。如何在幕后对 Box 进行身份验证?我网站的访问者可能没有 Box 帐户,或者他们可能位于阻止 Box.com 的公司网络后面。也就是说,链接到我网站上的框 url 或嵌入框不是一种选择。因此需要通过 Box API 从我的网站提供文件。如果 Box API 不支持这样的场景,那很好。我只需要知道。非常感谢。
    • 您可以让您的服务器使用您自己的 Box 帐户进行身份验证,以便它可以访问您需要提供的文件。如果您担心您的用户位于防火墙后面,那么除了通过您自己的服务器代理下载和上传之外,您没有太多选择。
    • 据我所知,Box API 不支持服务器到服务器的应用程序身份验证。 stackoverflow.com/questions/12582381/… 有点旧,但似乎支持我目前发现的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多