2017-08-31 126 views
0

不确定这是否真的很愚蠢,但是可以在Web API范围内访问/使用Dropbox吗?在Web API中使用Dropbox

考虑以下几点。我有一个用Angular编写的多租户前端应用程序。 C#web API中的后端(多租户)。用户可以上传文件/文件。 API将负责将文档上传到存储提供商。在这种情况下,它是Dropbox。事情是,我读过Dropbox不再支持用户名/密码验证。因此,OAuth被用户需要提供对调用应用程序的同意。这只需要发生一次。由于单个租户内的多个用户可以使用在线存储,因此我很难看出这将如何通过Web API工作...

有什么建议吗? 谢谢!

+0

如果您使用的是Dropbox .NET SDK,那么我会看看那里提供的示例。如果你看看他们简单的博客演示,你可以看到他们如何为数据库中的所有用户存储访问令牌,然后当上传文件时,他们为正在执行操作的用户在后端检索访问令牌并使用该令牌进行身份验证要求dropbox https://github.com/dropbox/dropbox-sdk-dotnet/tree/master/dropbox-sdk-dotnet/例如 如果这是你正在寻找的东西,我不积极,但也许它会帮助指出你在正确的方向... – comradburk

+0

@comradburk非常感谢您的答复。所以我不能只存储一个访问令牌并将其用于所有用户?我只想为所有用户使用一个存储位置。事实上,根管理员用户设置了Dropbox实例。网站上的所有其他用户无需知道正在使用哪个存储提供商 –

回答

1

是的,您可以利用Web API内部的第三方API。我从来没有使用Drop Box API,但正如你所说他们使用OAuth作为认证机制,我可以向你展示调用第三方API的代码,在这种情况下它是(clarifai)。 我使用的是HttpClient,您可以使用Dropbox .NET SDK。但是,如果你想坚持HTTP,那么here是相同的文档。

string token = "Oauth token received using some mechanism";  
string requestPath = string.Format("v1/tag"); 

HttpClient client = new HttpClient(); 
client.BaseAddress = new Uri("https://api.clarifai.com/"); 
client.DefaultRequestHeaders.Accept.Clear(); 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); 

HttpResponseMessage response = await client.PostAsync(requestPath, content); 
if (response.IsSuccessStatusCode) 
{ 
    var resString = await response.Content.ReadAsStringAsync(); 
    // JSON Response 
    JObject resJsonObject = JObject.Parse(resString); 

} 

现在,您需要关注对用户进行身份验证并获取令牌。 Here是Dropbox示例,其中显示了如何在dropbox网站上重定向用户以进行身份​​验证并获取临时oauth标记。

  • 看看Connect操作方法,并在Home控制器AuthAsync操作方法。

希望这可以帮助你。如有任何疑问,请随时询问。

+0

为了更好地了解Auth的运行情况,以下是真实的。我在Dropbox中创建了一个应用程序。当用户需要授予权限/身份验证时,我指的是我的网站中此应用的ID和密码。用户授予应用程序可以管理文件和文件夹的权限。该网站从OAuth回拨接收到令牌。我是否认为该网站现在可以随时管理这些文件,而无需再次进行认证?谢谢! –

+1

@RichardBailey你是对的。我会建议您查看OAuth的文档,即您从DropBox获取的令牌,它的到期时间是什么。取决于您可能需要实施刷新令牌的过期时间 –

+0

只需阅读以下内容:_Do API访问令牌过期了吗? 应用程序访问令牌不会过期,但用户可以通过进入我的应用程序手动撤销令牌。对于具有应用程序文件夹访问权限的应用程序,如果用户删除应用程序文件夹,则应用程序的访问令牌将不再有效。您应该只处理一次授权,并为该用户的所有未来呼叫保存访问令牌。如果现有访问令牌无效(在这种情况下调用将返回401),则应提示用户重新授权您的app_源代码:https://www.dropbox.com/developers/support –