在Web API中使用Dropbox

时间:2017-08-31 14:34:48

标签: c# angularjs asp.net-web-api2 dropbox-api

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

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

有什么建议吗? 谢谢!

1 个答案:

答案 0 :(得分: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控制器中查看AuthAsync操作方法和Home操作方法。

希望这会对你有所帮助。如有任何疑问,请随时提出。