I'm using DropNet for Dropbox OAuth but I have one major problem - I can't store access token key and secret cause there is no point storing them. The storing mechanism is not a problem and not a key problem here - the problem is in this:
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);
}
}
The problem here is - first time it uploads ok, but the second time it doesn't - although dropboxLoggedIn is true, and access token key and secret are stored ok, it doesn't upload file, but more strangely it doesn't return any error or exception. If I move GetToken out of if same thing happens. I know I'm doing somewhere wrong, but I can't quite get where. I've striped some parts of code like file paths and getting the file which are irrelevant. I did the same thing for Twitter, but it works there with no problems. Any ideas?
Ok, so the problem was in initialization of the object - if you do:
DropNetClient _Dclient = new DropNetClient("xxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyy");
_Dclient.UseSandbox = true;
_Dclient.UserLogin.Token = "zzzzzzzzzzzzzzz";
_Dclient.UserLogin.Secret = "wwwwwwwwwwwwww";
This wouldn't work - instead it needs to be initialized like this:
DropNetClient _Dclient = new DropNetClient("xxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyy","zzzzzzzzzzzzzzz","wwwwwwwwwwwwww");
_Dclient.UseSandbox = true;
I'm not sure where I found the first code sample in some documentation or forum but it's wrong. If you use it - no error or exception will happen, but dropbox file upload or operation won't be done. If you use the second one all will work.