使用访问令牌登录Dropbox

时间:2015-05-08 16:33:37

标签: c# dropbox-api

我已使用此代码(来自Spring.NET Social Dropbox)使用C#Winform应用程序访问Dropbox: https://github.com/spring-projects/spring-net-social-dropbox/blob/master/examples/Spring.ConsoleQuickStart/src/Spring.ConsoleQuickStart/Program.cs

DropboxServiceProvider dropboxServiceProvider = new DropboxServiceProvider(DropboxAppKey, DropboxAppSecret, AccessLevel.Full);
// Authorization without callback url
Console.Write("Getting request token...");
OAuthToken oauthToken = dropboxServiceProvider.OAuthOperations.FetchRequestTokenAsync(null , null).Result;
Console.WriteLine("Done");
OAuth1Parameters parameters = new OAuth1Parameters();
string authenticateUrl = dropboxServiceProvider.OAuthOperations.BuildAuthorizeUrl(oauthToken.Value, parameters);
Console.WriteLine("Redirect user for authorization");
Process.Start(authenticateUrl);
Console.Write("Press any key when authorization attempt has succeeded");
Console.ReadLine();
Console.Write("Getting access token...");
AuthorizedRequestToken requestToken = new AuthorizedRequestToken(oauthToken, null);
OAuthToken oauthAccessToken = dropboxServiceProvider.OAuthOperations.ExchangeForAccessTokenAsync(requestToken, null).Result;
Console.WriteLine("Done");
IDropbox dropbox = dropboxServiceProvider.GetApi(oauthAccessToken.Value, oauthAccessToken.Secret);
DropboxProfile profile = dropbox.GetUserProfileAsync().Result;

但我发现可以直接获取访问令牌,如下所述: https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/

那么可以使用第二个链接中手动获取的访问令牌来登录Dropbox吗?

我尝试将令牌直接传递给dropboxServiceProvider.GetApi,但它无效。

2 个答案:

答案 0 :(得分:1)

  

因此可以使用手动获取的访问令牌   第二个链接登录Dropbox?

如果这是你的问题,答案是否定的。你不能。 Dropbox在文档中说明了这一点。

  

请注意,生成的访问令牌仅适用于您自己的Dropbox   帐户。 将应用部署部署到其他用户后,您需要使用   标准OAuth授权流程,以获取每个用户的令牌。

此外,您正在使用的库上有点。 spring-net-social-dropbox最后更新于2012年11月,而Dropbox API则是OAuth 1.0。现在使用的OAuth2.0版本Dropbox仅在2013年7月宣布。这实际上意味着您使用的是过时的库

更多当前API的链接:https://www.dropbox.com/developers/core/sdks/other

<强>更新
DropNet的文档:http://dropnet.github.io/dropnet.html

答案 1 :(得分:0)

从应用控制台生成的访问令牌是OAuth 2访问令牌,但其余代码似乎使用OAuth 1.如果您使用的库支持OAuth 2,则应该能够使用生成的访问令牌。如果没有,那么我担心你必须通过OAuth流程获得令牌。