Box API创建共享链接

时间:2013-09-02 16:13:10

标签: c# box-api

我正在尝试将一些文档上传到Box,并为每个文档创建和检索共享链接。 这是我正在使用的代码,但我总是检索403:access_denied_insufficient_permissions。 知道为什么会这样吗?

希望你能帮助我!感谢。

// CREATE THE FILE
BoxFileRequest req = new BoxFileRequest
{
    Name = zipFile.Name,
    Parent = new BoxRequestEntity { Id = newFolder.Id}
};
BoxFile uploadedFile = client.FilesManager.UploadAsync(req, stream).Result;

//REQUEST SHARED LINK
BoxSharedLinkRequest sharedLinkReq = new BoxSharedLinkRequest()
{
       Access = BoxSharedLinkAccessType.open,
       Permissions = new BoxPermissionsRequest
       {
             Download = BoxPermissionType.Open,
             Preview = BoxPermissionType.Open,
       }
};

BoxFile fileLink = fileManager.CreateSharedLinkAsync(uploadedFile.Id, sharedLinkReq).Result;

2 个答案:

答案 0 :(得分:0)

您需要提供访问令牌和网址。我使用了以下代码,并以JSON格式获得响应。有关更多参考,请查看框API文档

        HttpWebRequest httpWReq = HttpWebRequest)WebRequest.Create("https://api.box.com/2.0/folders/" + FolderID);
        ASCIIEncoding encoding = new ASCIIEncoding();
        string putData = "{\"shared_link\": {\"access\": \"open\"}}";
        byte[] data = encoding.GetBytes(putData);
        httpWReq.Method = "PUT";
        httpWReq.Headers.Add("Authorization", "Bearer ");
        httpWReq.ContentType = "application/json";
        httpWReq.ContentLength = data.Length;

在此之后使用httpwebrequest PUT方法。 如果有帮助,请将其标记为答案。

答案 1 :(得分:0)

看起来您正在使用第三方BoxSync V2 API对象。如果您想直接编写API代码,我遇到了类似的问题。如果您查看this帖子,您会看到答案。这是我使用的代码,它可以工作。

    string uri = String.Format(UriFiles, fileId);
    string response = string.Empty;
    string body = "{\"shared_link\": {\"access\": \"open\"}}";
    byte[] postArray = Encoding.ASCII.GetBytes(body);

    try
    {
        using (var client = new WebClient())
        {
            client.Headers.Add("Authorization: Bearer " + token);
            client.Headers.Add("Content-Type", "application/json");
            response = client.UploadString(uri, "PUT", body);
        }
    }
    catch (Exception ex)
    {
        return null;
    }
    return response;