5

问题:

我在这里使用 DropBox csharp API:
https ://github.com/dkarzon/DropNet

来自单元测试,以及来自这里的唯一工作示例 https://github.com/dkarzon/DropNet/blob/master/DropNet.Samples/DropNet.Samples.Web/Default.aspx.cs

我认为它是这样工作的:

DropNet.DropNetClient client = new DropNet.DropNetClient(strApiKey, strAppSecret);

DropNet.Models.UserLogin login = client.GetToken();
client.UserLogin = login;

var accountInfo = client.AccountInfo();
str = accountInfo.quota_info.quota.ToString();

问题是,它在 accountinfo 上引发异常。(System.Net.HttpStatusCode.Unauthorized) 一切正常之前,我得到了登录 (usertoken & usersecret) 。

我认为我的问题是示例应用程序的这一部分:

var url = _client.BuildAuthorizeUrl(Request.Url.ToString() + "?dropboxcallback=1");
Response.Redirect(url);

它重定向到 Dropbox 以进行登录...我没有 Web 应用程序,所以我没有 URL...

我拥有的是一个控制台应用程序,它应该每天晚上自动备份我的数据库作为一项服务,这肯定是非常糟糕的,需要一个网络浏览器和一个必须输入电子邮件/用户名+密码的用户。

如何通过直接提供硬编码的用户名和密码进行登录?

如果我使用示例应用程序,那么它可以工作,但这需要在 Web 上输入用户名和密码,这对于控制台应用程序来说很耗时......

4

5 回答 5

6

据我从其他 API(facebook、google、stack exchange 等)了解到,您必须将您的用户重定向到 Dropbox 的网页,在那里它将授予您使用其帐户执行操作的权限。

因此,一般来说,如果没有 webbrower,就不可能实现这一点。否则,您将不得不执行非常肮脏的黑客攻击来破解 Dropbox 的权限系统。

请查看谷歌上的“OAuth 2.0 授权流程”。这是我在雅虎找到的一张图表,它展示了它是如何工作的:

OAuth 2.0 流程

于 2012-07-15T21:23:26.973 回答
2

为了使用 DropnetClient 的 4 参数构造函数,我们还需要构建基于 Web 的 url 并允许用户验证他的帐户,这是 compusory 的事情,用户在验证过程中点击允许按钮后会生成 accesstoken

于 2012-11-06T08:32:27.350 回答
1

正如 GameScripting 所解释的,Dropbox API 使用 oauth,它需要用户通过 Dropbox 网站登录来验证访问令牌。

在此处查看文档:http: //dkdevelopment.net/what-im-doing/dropnet/以了解 3 步过程。

您正在构建什么样的应用程序?正常过程是在应用程序中加载浏览器控件并使用它导航到登录 URL。

还可以查看示例 Windows Phone 应用程序,让您了解此过程的工作原理:https ://github.com/dkarzon/DropNet/blob/master/DropNet.Samples/DropNet.Samples.WP7/MainPage.xaml 。CS

于 2012-07-16T00:01:41.120 回答
1

您可以硬编码 OAuth 访问令牌,而不是硬编码用户名和密码。

首先,创建一个遵循基于浏览器的标准授权流程的简单程序(使用相同的应用程序密钥)。然后使用它向所需用户授权应用程序。这将为您提供与该用户和您的应用密钥相关联的 OAuth 访问令牌(“令牌”和“令牌机密”)。

然后,在您的服务式应用程序中,只需硬编码 OAuth 访问令牌(使用DropNetClient4 参数构造函数)。

于 2012-07-22T04:41:43.963 回答
0

有可能,使用 SharpBox - 经过测试,有效。
需要手动一次性获取AccessToken,之后可以省略登录页面,使用保存的AccessToken。

http://www.jayway.com/2012/02/06/unboxing-dropbox-and-sharpbox-2/

神奇的线是:

Globals.DropBox.Token = AppLimit.CloudComputing.SharpBox.StorageProvider.DropBox.DropBoxStorageProviderTools
.ExchangeDropBoxRequestTokenIntoAccessToken(
      Globals.DropBox.config
    , Globals.DropBox.AppKey, Globals.DropBox.AppSec
    , Globals.DropBox.requestToken
);
于 2013-08-21T10:21:28.507 回答