【Win10 UWP】QQ SDK(一):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/" }); }

  

再看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的回調處理》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM