SkyDrive - How to upload content on Windows Phone
is a Microsoft service that allow you to store files into a cloud in order to be automatically available from your phone and computers. You can share large files and photos or documents with your friends or collegues.
Although the service is available for many platforms such as Windows, Mac, iOS, Android all you need to access to your content is a web browser.
This article is focused on the most interesting feature, the mobile access.
Live Connect provides developers a set of controls and APIs that enable applications to integrate sign in with the user’s Microsoft account and enable users to access information from SkyDrive, Hotmail, and Messenger. At time of writing these APIs are not included by default on Windows Phone SDK.
Before start developing
Using SkyDrive APIs
Create a new HelloWorldPhone Windows Phone application in Microsoft Visual Studio 2010 Express for Windows Phone using the Visual C# -> Silverlight for Windows Phone -> Windows Phone Application project template and name it SkyDrive
Choose last OS version
Bring up the Add Reference dialog and go to the .Net tab. Scroll down to find the Microsoft.Live and Microsoft.Live.Controls assemblies. Add them to your project.
Open MainPage.xaml in the designer. Bring the Toolbox in view and right-click to select Choose Items… Under Windows Phone Components tab, find the SignInButton control in the Microsoft.Live.Control namespace and add to your toolbox (You only need to do this once).
If everything is well installed you should see the SignInButton control in your toolbox. Drag it onto your designer surface. In your xaml file,
Scopes and permissions
Before your app makes requests of the Live Connect APIs to work with Live Connect info, in most cases you must get permission from the user to access that info or to create new objects on behalf of the user. In the Live Connect APIs, this permission is called a scope. Each scope grants a different permission level.
There are three types of scopes:
- Core scopes are central to the Live Connect APIs and involve users' core profile and contact data.
- Extended scopes allow you to work with users' extended profile and contact data.
- Developer scopes allow you to work with developers' client IDs.
For our sample project we need the following scopes
|wl.basic||Read access to a user's basic profile info. Also enables read access to a user's list of contacts.|
|wl.offline_access||The ability of an app to read and update a user's info at any time. Without this scope, an app can access the user's info only while the user is signed in to Live Connect and is using your app.|
|wl.signin||Single sign-in behavior. With single sign-in, users who are already signed in to Live Connect are also signed in to your website.|
|wl.skydrive_update||Read and write access to a user's files stored in SkyDrive.|
Into .xaml file your code should look like that:
<my:SignInButton Content="Button" Name="skydrive" Scopes="wl.basic wl.signin wl.offline_access wl.skydrive_update" VerticalAlignment="Top" Width="160" Height="72" />
Now we need to connect our application to Live Connect. Go to the application management site and click the Create Application. Create an application and provide a name for it.
If everything goes well you will be provided with a ClientID and a Client secret code
Now let's add the ClientID to our SignInButton code
<my:SignInButton Content="Button" Name="skydrive" ClientId="00000000440xxxxx" Scopes="wl.basic wl.signin wl.offline_access wl.skydrive_update" VerticalAlignment="Top" Width="160" Height="72" />