我正在使用DropNet for Dropbox OAuth,但我有一个主要问题 - 我无法存储访问令牌密钥和秘密,因为没有点存储它们。存储机制不是问题,而不是一个关键问题 - 问题在于:
private void dropboxUpload()
{
DropNetClient _Dclient = new DropNetClient("xxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyy");
_Dclient.UseSandbox = true;
if (!dropboxLoggedIn)
{
_Dclient.GetToken();
string url = _Dclient.BuildAuthorizeUrl();
Process.Start(url);
if (MessageBox.Show("Click OK after you have allowed Sizester to create and access a sub-folder called Sizester in a folder called Apps in your Dropbox account.", "Sizester access request", MessageBoxButtons.OKCancel) != System.Windows.Forms.DialogResult.OK)
{
return;
}
}
try
{
if (!dropboxLoggedIn)
{
_Dclient.GetAccessToken();
dropboxAsecret = _Dclient.UserLogin.Secret;
dropboxAtoken = _Dclient.UserLogin.Token;
}
else
{
_Dclient.UserLogin.Token = dropboxAtoken;
_Dclient.UserLogin.Secret = dropboxAsecret;
}
dropboxLoggedIn = true;
//...
_Dclient.UploadFile("/", fileE, FileToByteArray(newFilePath));
MessageBox.Show("Successfully uploaded to Dropbox.", "Uploaded to Dropbox");
}
catch (Exception dropboxEx)
{
MessageBox.Show("Error: " + dropboxEx.Message);
}
}
这里的问题是 - 第一次上传确定,但第二次没有 - 虽然dropboxLoggedIn为真,并且访问令牌密钥和秘密存储正常,但它不上传文件,但更奇怪的是它没有不返回任何错误或异常。 如果我移动GetToken,如果同样的事情发生。我知道我做错了什么,但我不能到达哪里。 我已经对文件路径的某些部分进行了条带化处理,并获取了与之无关的文件。 我为Twitter做了同样的事情,但它没有任何问题。 有什么想法吗?
答案 0 :(得分:1)
此链接应该有助于解决该问题: http://forums.dropbox.com/topic.php?id=61115&replies=6
基本上,您需要从Upload File方法初始化DropNetClient _Dclient
实例。当您获得访问令牌时,您应该将其保存在会话或配置文件中,并且每次上传文件时都不需要这样做。
答案 1 :(得分:1)
从第3行看起来让你烦恼:if (!dropboxLoggedIn)
所以,只有当用户没有登录时才会继续,但是在第二次尝试时你的说法应该是真的,从而跳过所有上传代码。
答案 2 :(得分:1)
好的,问题在于对象的初始化 - 如果你这样做:
DropNetClient _Dclient = new DropNetClient("xxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyy");
_Dclient.UseSandbox = true;
_Dclient.UserLogin.Token = "zzzzzzzzzzzzzzz";
_Dclient.UserLogin.Secret = "wwwwwwwwwwwwww";
这不起作用 - 而是需要像这样初始化:
DropNetClient _Dclient = new DropNetClient("xxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyy","zzzzzzzzzzzzzzz","wwwwwwwwwwwwww");
_Dclient.UseSandbox = true;
我不确定在某些文档或论坛中我找到第一个代码示例的位置,但这是错误的。如果您使用它 - 不会发生错误或异常,但不会完成Dropbox文件上传或操作。如果你使用第二个,那么一切都会有效。