天天看點

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

介紹了Windows Runtime版QQ SDK的基本使用方法

每當開發一個應用需要社交分享的應用時,總是心裡咯噔一下:到底什麼時候分享能加上QQ和微信?除了WP8.0版本的微信SDK,官方似乎從未正面釋出過适應時代發展的QQ SDK,就連背景,也沒有一個可以建立WP應用的入口(其實WP QQ團隊很早就已經在開發WP版的QQ SDK,隻是網站那邊一直沒人管上線這事,具體你也懂)。

吐槽完畢。

作為一個長期以來,緻力于散播溫暖,散播希望的小清新無公害WP開發者,今天又要給廣大WP開發者傳播希望了。部落客拿到了非正式版的QQ SDK,并且做了一些封裝,僅供學習交流。開始我們今天的主題”QQ SDK“,以下以Win10 UWP作為例子說明使用方法。

1. 安裝ConnectQQ SDK

部落客拿到的SDK是散件,自己寫了個nuget合成一個神裝。由于SDK是C++寫的,需要将你的項目設定成x86、x64或ARM進行調試,這個nuget作用就是實作在你進行架構切換時,在build過程中自動引用正确的dll。

通過nuget下載下傳并安裝QQ SDK,連結:https://www.nuget.org/packages/ConnectQQSDK/1.4.0

或者在控制台輸入PM> Install-Package ConnectQQSDK

QQ SDK的作用是使我們在自己的代碼裡能将QQ用戶端呼起來,并作相應的操作。

注意:引用完成後,需要先Unload一下項目再重新Reload,或者重新開機一下VS。

2. 申請QQ互聯應用Id

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

3. 配置Package.appxmanifest檔案

QQ SDK使用檔案類型關聯和協定關聯混合模式來進行應用間互調通信,那麼需要進入Package.appxmanifest檔案進行相關配置。

在<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/"
    });
}        
【Win10 UWP】QQ SDK(一):SDK基本使用方法
【Win10 UWP】QQ SDK(一):SDK基本使用方法

再看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"
    });
}          
【Win10 UWP】QQ SDK(一):SDK基本使用方法

至于授權結果的回調處理,我們留待下一講。

當然,如果授權過期了,可以再調用一下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的回調處理》

繼續閱讀