【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的回调处理》

时间: 2024-10-24 18:17:03

【Win10 UWP】QQ SDK(一):SDK基本使用方法的相关文章

QQ登录-第三方SDK的接入总结

由于项目的需要,使用了[QQ登录]SDK 的相关功能! 1.集成[QQ登录]SDK [QQ登录]SDK下载地址: http://wiki.open.qq.com/wiki/website/SDK下载 [QQ登录]相关的帮助文档地址: http://wiki.opensns.qq.com/wiki/[QQ登录]IOS_SDK使用说明 在里边帮助文档写的很清楚,也很给力,傻瓜式的配置步骤!应该没有什么难度! 2.腾讯SDK的困惑 当我集成[QQ登录]SDK的时候,我觉的很困惑:[腾讯开放平台]和[Q

QQ登录-第三方SDK的接入总结(搜索 qq互联)

由于项目的需要,使用了[QQ登录]SDK 的相关功能! 1.集成[QQ登录]SDK [QQ登录]SDK下载地址: http://wiki.open.qq.com/wiki/website/SDK下载 [QQ登录]相关的帮助文档地址: http://wiki.opensns.qq.com/wiki/[QQ登录]IOS_SDK使用说明 在里边帮助文档写的很清楚,也很给力,傻瓜式的配置步骤!应该没有什么难度! 2.腾讯SDK的困惑 当我集成[QQ登录]SDK的时候,我觉的很困惑:[腾讯开放平台]和[Q

Win10 UWP开发系列:解决Win10不同版本的Style差异导致的兼容性问题

原文:Win10 UWP开发系列:解决Win10不同版本的Style差异导致的兼容性问题 最近在开发一个项目时,遇到了一个奇怪的问题,项目依赖的最低版本是10586,目标版本是14393,开发完毕发布到商店后,很多用户报无法正常加载页面.经查,有问题的都是Win10 10586版本. 我上篇博客中写到的自定义的AppBar控件,也存在这个问题,10586会报错. 为此特意下载了10586的SDK调试.错误显示,一个样式找不到,名为ListViewItemBackground.因为开发的时候是基于

微信Android SDK示例代码及运行方法

最近在研究微信SDK,无奈网上好使的教程太少,对于程序员来说最好的东西,一个是微信的开发文档,一个是微信SDK的范例代码.无奈文档小白很难看懂,范例代码又没有详细的解释,导致我折腾了好多天,现在有点眉目了,先记下来. 1.申请应用AppKey 微信的SDK要求应用的包名.签名的MD5.AppID严格对应,所以没有申请的应用是肯定无法使用的.申请了的应用如果这三个对不上,是无法使用的. ·包名,是应用建立时候的名称,你可以在AndroidManifest.xml文件的package项中找到 ·签名

Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneGap.ionic.AngularJS这些框架或库的关系,我个人理解是这样,PhoneGap是一个商业项目,用来实现HTML5式的跨平台开发,后来Adobe公司将其中的核心代码开源,就是Cordova,Cordova只负责实现JavaScript调用原生代码的功能,是一个壳,而壳里具体用什么样式,在H

Android SDK下载速度慢的解决方法(简单使用代理)

相信做android开发的同学们,一定会遇到的问题就是google那边经常崩,但是学习的开始,我们又必须要用Android SDK,(几个G的大小),一般我们装完ADT之后(如果你用的是Eclipse,android studio的就不需要了.),这时候我们需要打开SDK Manager来下载Android SDK的一些工具,还有android不同版本的内容.但是你会发现速度慢得惊人.原因就是Google. 本来不想因为这个东西写一篇博文的,但是因为怕刚开始学android的人会在上面浪费很多时

百度Android语音识别SDK语义理解与解析方法

百度语义理解开放平台面向互联网开发者提供自然语言文本的解析服务,也就是可以根据文本的意图解析成相应的表示. 为了易于人阅读,同时也方便机器解析和生成,意图表示协议采用 json 语言进行描述,采用 gb18030 编码. json 语言的基本概念: 1.属性名/属性值 即键值对(key-value) 2.数组 在 json 中是"[]"括起来的内容,数据结构为 ["value1","value2",...],取值方式和所有语言中一样,使用索引获取

Win10 UWP开发系列:实现Master/Detail布局

在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档:https://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/dn997765.aspx 样式如下: 在微软官方的Sample里,有这种样式的代码示例,下载地址:https://github.com/Microsoft/Windows-univ

org.gradle.process.internal.ExecException: Process &#39;command &#39;D:\SDK\AS\sdk\build-tools\23.0.0\aapt.exe&#39;&#39; finished with non-zero exit value 1

AGPBI: {"kind":"error","text":"No resource identifier found for attribute \u0027text_titleText\u0027 in package \u0027 包名 \u0027","sources":[{"file":"D:\\workSpace\\Android Studio\\Bank\\res