Dropbox with Windows Phone
This article explains how to connect Windows Phone to Dropbox cloud service by using Sharpbox
Some user may want to connect other cloud services than SkyDrive which is offered by Microsoft. By using Open Source project called Sharpbox, you can access to Dropbox clouds. At the time of writing this article, it is still not possible to access other clouds like CloudMe in Windows Phone although those others works with desktops.
Download Sharpbox from here: http://sharpbox.codeplex.com/ Add it as reference to your project.
For easier way I suggest to use NuGet to manage external projects, also those will be automatically referenced in to your project. More info about Nuget: http://nuget.codeplex.com/
Sharpbox needs valid Dropbox application key and secret. These you can make in Dropbox website, developers section where you create own application.
Dropbox developers: https://www.dropbox.com/developers
With Sharpbox it is also possible to use token from file to connect Dropbox. To get token use utility application named DropBoxTokenIssuer.exe that comes with Sharpbox and it is located in net40-full folder. It's Windows application, run in desktop. Then input your application key and secret to token issuer. Create empty TXT-file and write it's path to token issuer. Click authorize and program will retrieve token to this text file.
If you don't create empty text file where to get token, program will fail to get one.
Sharpbox library has synchronized and asynchronized functions for many operations. For desktop usage both are fine but in Windows Phone, operating system and it's frameworks has their own limitations. All of the synchronized calls will block running UI thread and therefore the whole application. The only way to get things working is to use asynchronous functions. Some needed functions still lack of asynchronous versions, it is possible to use these by implementing own async versions to own application but more of it later.
Include TXT-file, where you obtained token, to your project as an resource. Then read it as resource stream.
public void ConnectCloud(string username, string password)
ICloudStorageConfiguration conf = CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.DropBox);
ICloudStorageAccessToken accessToken = null;
StreamResourceInfo sri = Application.GetResourceStream(new Uri("/DropBoxImages;component/dropboxtoken.txt", UriKind.RelativeOrAbsolute));
if (sri != null)
LoadingFileList = true;
accessToken = m_dropBox.DeserializeSecurityToken(sri.Stream);
m_dropBox.BeginOpenRequest(LoginCallback, conf, accessToken);