VK SDK makes using VK API in Windows Phone applications much easier. Users can pass the authorization without entering a login and a password. You may start using API methods right away.
Project page and source code at GitHub:
http://github.com/VKCOM/vk-windowsphone-sdk
Windows Phone versions 8.0 and higher are supported.
Before using VK SDK you need to create a
Standalone app at the
app creation page. Save your
app ID (it will be the
API_ID parameter in the documentation).
Fill in the Windows App ID field to enable authorization through VK official app.
For Silverlight apps it is ProductId from the WMAppManifest.xml file. For XAML apps it is Identity.Name from Package.appxmanifest. In both cases it is a guid type value (for example 5130dfdb-3c66-490b-8f50-d62b757efde5).
Add a link to the VK.WindowsPhone.SDK project.
Source code at GitHub
Before using VK SDK you need to initialize it:
VKSDK.Initialize("%your_app_id_here%");
VKSDK.WakeUpSession();
Processed by following method:
VKSDK.Authorize
User will be redirected to the authorization page. If it is passed successfully following event will be called:
VKSDK.AccessTokenReceived
Otherwise:
VKSDK.AccessDenied
The VK app starting from version 4.1 supports third-party apps authorization.
For authorization callback address protocol:
VKSDK.Authorize(_scope, false, false, LoginType.VKApp);
Specify the callback address protocol in your app (it allows the VK app to return control).
For Silverlight apps specify the following protocol in the WMAppManifest.xml file:
<Extensions>
<Protocol Name="vkc%your_windows_app_id%" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
</Extensions>
For XAML apps specify the protocol in the Package.appxmanifest file:
<Extensions>
<Extension Category="windows.protocol">
<Protocol Name="vkc%your_windows_app_id%" m2:DesiredView="useLess"/>
</Extension>
</Extensions>
Add the VKConfig.xml (build action = content) file to the project's root directory:
<?xml version="1.0" encoding="utf-8" ?>
<Extensions>
<Protocol Name="vkc%your_windows_app_id%" />
</Extensions>
You may use the built-in SDK methods or get an access token and
use your own library.
To call API methods use the VKRequest class.
For example to get current users friends:
VKRequest.Dispatch<VKList<VKUser>>(new VKRequestParameters("friends.get", "fields", "photo_200"), (res) =>
{
if (res.ResultCode == VKResultCode.Succeeded)
{
var data = res.Data;
/* your code handling successful execution here */
}
else
{
var error = res.Error; /* can be null */
var failureCode = res.ResultCode;
/* your code handling a failure here */
}
} );
While deserializing server replies the structure of the type transmitted in Dispatch<T> (in the previous example it is VKList<VKUser>) is supposed to match the JSON string returned by the server.
You may transmit your own deserialization function from JSON if needed. For this use the extra parameter of the Dispatch method: Func<string, T> customDeseriailzationFunc = null.
All the SDK model classes (such as VKUser) are declared as partial.
To upload photos to the server use the VKUploadRequest class:
VKUploadRequest.CreatePhotoWallUploadRequest().Dispatch(
yourImageStream,
(progress) =>
{
/* your progress handler */
},
(res) =>
{
/* your result handler */
});
In case of placing your app at
Mobile catalog you should call
VKAppPlatform.ReportInAppPurchase in each in-app purchase event:
var results = await CurrentApp.RequestProductPurchaseAsync("product1");
if (results.Status == ProductPurchaseStatus.Succeeded)
{
VKAppPlatform.Instance.ReportInAppPurchase(
new VKAppPlatform.InAppPurchaseData(
results.ReceiptXml,
product.FormattedPrice));
}
SDK provides the UI to create wall posts. The VKSDK.Publish(inputData) method is used for it. The user will be redirected to the post creation page. The inputData object contains Text, Image and ExternalLink properties, values of which initialize this page.
SDK processes the Validation Error automatically. To correctly process captcha you need to set a handler for VKSDK.CaptchaRequest. It is recommended to use the VKCaptchaRequestControl in a handler. This control is a part of SDK:
private void CaptchaRequest(VKCaptchaUserRequest captchaUserRequest, Action<VKCaptchaUserResponse> action)
{
/* put an instance of VKCaptchaRequestControl on your page and instantiate it */
captchaRequestControl.ShowCaptchaRequest(captchaUserRequest, action);
}