【Win10 UWP】QQ SDK(一):SDK基本使用方法

每當開發一個應用須要社交分享的應用時,老是內心咯噔一下:到底何時分享能加上QQ和微信?除了WP8.0版本的微信SDK,官方彷佛從未正面發佈過適應時代發展的QQ SDK,就連後臺,也沒有一個能夠建立WP應用的入口(其實WP QQ團隊很早就已經在開發WP版的QQ SDK,只是網站那邊一直沒人管上線這事,具體你也懂)。html

吐槽完畢。windows

 

做爲一個長期以來,致力於散播溫暖,散播但願的小清新無公害WP開發者,今天又要給廣大WP開發者傳播但願了。博主拿到了非正式版的QQ SDK,而且作了一些封裝,僅供學習交流。開始咱們今天的主題」QQ SDK「,如下以Win10 UWP做爲例子說明使用方法。api

 

1. 安裝ConnectQQ SDK

博主拿到的SDK是散件,本身寫了個nuget合成一個神裝。因爲SDK是C++寫的,須要將你的項目設置成x8六、x64或ARM進行調試,這個nuget做用就是實如今你進行架構切換時,在build過程當中自動引用正確的dll。微信

經過nuget下載並安裝QQ SDK,連接:https://www.nuget.org/packages/ConnectQQSDK/1.4.0架構

或者在控制檯輸入PM> Install-Package ConnectQQSDKapp

QQ SDK的做用是使咱們在本身的代碼裏能將QQ客戶端呼起來,並做相應的操做。async

注意:引用完成後,須要先Unload一下項目再從新Reload,或者重啓一下VS。學習

 

2. 申請QQ互聯應用Id

到QQ互聯官網:http://connect.qq.com/ 建立應用,得到一個AppId網站

 

3. 配置Package.appxmanifest文件

QQ SDK使用文件類型關聯和協議關聯混合模式來進行應用間互調通訊,那麼須要進入Package.appxmanifest文件進行相關配置。ui

在<Applications>節點中的<Application>節點下,添加一個<Extensions>節點,分別添加windows.fileTypeAssociation和windows.protocol兩個聲明:

<Extensions>

    <uap:Extension Category="windows.fileTypeAssociation">
          <uap:FileTypeAssociation Name="test">
                <uap:SupportedFileTypes>
                      <uap:FileType ContentType="application/qqsdkconnect">.qc-xxxxxxxxxx</uap:FileType>
                </uap:SupportedFileTypes>
          </uap:FileTypeAssociation>
    </uap:Extension>

    <uap:Extension Category="windows.protocol">
        <uap:Protocol Name="qc-xxxxxxxxxx" />
    </uap:Extension>

</Extensions>    

注意:把其中的xxxxxxxx替換成你本身的AppId。

至於何時經過文件類型,何時經過協議進行互調,咱們在下一講會具體說明。

 

4. 初始化SDK

在App.cs的OnLaunched和OnActivated方法的適當位置進行初始化,SDK提供一個靜態的QQSDK實例進行管理,調用其Initialize方法初始化,傳遞第3步獲取的AppId做爲參數:

QQSDK.Instance.Initialize("xxxxxxxxxx");

 

5. 調用SDK的分享方法

(1) 分享到QQ

QQSDK類的ShareToQQ方法用來分享數據到QQ客戶端,支持分享到QQ好友、羣、討論組等,如圖:

ShareToQQ有兩個重載方法:ShareToQQ(ShareToQQDefaultModel model) 和 ShareToQQ(ShareToQQImageModel model),分別表示分享圖文消息和分享純圖片消息。

首先看ShareToQQDefaultModel,分享圖文消息

public sealed class ShareToQQDefaultModel : __IShareToQQDefaultModelPublicNonVirtuals
{
    public ShareToQQDefaultModel();
    public byte[] ImageData { get; set; }
    public string ImageUrl { get; set; }
    public ShareToQQKeyType KeyType { get; set; }
    public string Summary { get; set; }
    public string TargetUrl { get; set; }
    public string Title { get; set; }
}

字段含義很少解釋,注意其中ImageUrl和ImageData,前者用於圖片連接數據,後者用於圖片流數據,調用時兩者不要同時設置。

private async void ShareButton_OnClick(object sender, RoutedEventArgs e)
{
    await QQSDK.Instance.ShareToQQ(new ShareToQQDefaultModel
    {
     KeyType = ShareToQQKeyType.Default, 
     Title
= "test title", Summary = "test summary", ImageUrl = "http://ww2.sinaimg.cn/square/b50ea691gw1eu9a1mwyt9j20b408c752.jpg", TargetUrl = "http://news.qq.com/" }); }

  

再看ShareToQQImageModel,分享純圖片消息

public sealed class ShareToQQImageModel : __IShareToQQImageModelPublicNonVirtuals
{
    public ShareToQQImageModel();
    public string ImageLocalPath { get; set; }
    public ShareToQQKeyType KeyType { get; set; }
}

注意:這裏ImageLocalPath只能傳ApplicationData.Current.LocalFolder下的圖片...

private async void ShareButton_OnClick(object sender, RoutedEventArgs e)
{
    await QQSDK.Instance.ShareToQQ(new ShareToQQImagetModel
    {
        KeyType = ShareToQQKeyType.Image,
        ImageLocalPath = "test.jpg"
    });
}      

 

(2) 登陸受權

在沒有QQ SDK以前,若是想要獲取QQ用戶的受權,只能走OAuth去獲取受權,本身實現起來其實也是比較費工夫的,相信大部分開發者都有這方面的經驗,能夠參考官方文檔:http://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code%E8%8E%B7%E5%8F%96access_token

然而這不是咱們今天要討論的內容,有了QQ SDK,就能經過QQ客戶端來獲取受權了。

QQSDK類的Login和Logout能夠實現獲取受權和終止受權,固然前提是你在QQ互聯建立應用時須要申請一下一些Open API的權限,如"get_simple_userinfo", "get_simple_userinfo,get_vip_info", "all"等,更多開放API權限列表請參考官方文檔:

http://wiki.connect.qq.com/api%E5%88%97%E8%A1%A8

 

調用方法以下,Login方法傳入一個AuthorizeRequestData對象,且須要指定ApiScope:

private async void LoginButton_OnClick(object sender, RoutedEventArgs e)
{
    await QQSDK.Instance.Login(new AuthorizeRequestData
    {
        ApiScope = "get_simple_userinfo"
    });
}    

至於受權結果的回調處理,咱們留待下一講。

固然,若是受權過時了,能夠再調用一下QQSDK類的ReAuth方法刷新Token,這裏再也不具體講了。

 

(3) 調用Open API

QQ SDK還支持調用Open API,再也不須要手動去封裝了。QQSDK類提供Request方法來調用Open API,須要傳入一個OpenAPIRequestData對象。

public sealed class OpenAPIRequestData : __IOpenAPIRequestDataPublicNonVirtuals
{
    public OpenAPIRequestData();
    public string ApiName { get; set; }
    public HttpMethod Method { get; set; }
    public string[] Params { get; set; }
}

其中ApiName指Open API的名字,更多API請參考官方文檔:http://wiki.connect.qq.com/api%E5%88%97%E8%A1%A8

 

好比獲取QQ會員信息:

private async void GetVipInfoButton_OnClick(object sender, RoutedEventArgs e)
{
    var result = await QQSDK.Instance.Request(new OpenAPIRequestData
    {
        ApiName = "get_vip_info",
        Method = HttpMethod.HttpGet
    });

// ToDo: 處理result }

 

本文僅用於學習交流,轉載請註明出處:http://www.cnblogs.com/zhxilin/p/4661910.html

下一講,咱們來談談如何處理SDK的回調結果:《【Win10 UWP】QQ SDK(二):SDK的回調處理》

相關文章
相關標籤/搜索