本篇文档主要讲解如何使用 QQ 进行分享和授权。
创建应用
1.登录QQ互联,控制台并通过企业认证。
2.选择应用管理>移动应用>创建应用
3.单击创建移动应用
4.配置应用信息
以下为创建过程示例,图中信息仅为示例,创建时请按照真实信息填写,否则无法正常使用。
资料填写
完成以上内容填写后,QQ 平台应用创建已经完成,可正常使用。
权限申请
getUnionId 的 API 权限可通过操作栏-申请
应用关联(可选)
腾讯开放平台的移动应用关联到QQ互联,并获取 QQ 相关的开放能力。
安卓的需要查看包名和签名,iOS 的需要将自己项目的 Bundle id 进行报备,以及填写 Univesal link 进行审核
集成使用
配置信息获取
客户端在使用 QQ 平台之前,需要先获取 QQ 为应用分发的 APP ID 和 APP Key。
Android
SDK 集成
在集成 QQ 相关能力之前,请先按照ShareSDK集成指南完成 ShareSDK 的集成。
gradle 配置微信相关信息
在对应 gradle 文件中,添加如下 QQ 模块代码,其中 appId 的值对应 QQ 平台中的 App ID,appKey 对应 QQ 平台中的 App Key。
MobSDK { appKey "xxxxxx" appSecret "xxxxxx" ShareSDK { devInfo { QQ{ appId "xxxxxx" appKey "xxxxxx" enable true } ....... } }}
复制代码
分享示例
以下代码示例分享网络链接至 QQ 好友
Platform platform = ShareSDK.getPlatform(QQ.NAME);Platform.ShareParams shareParams = new Platform.ShareParams();shareParams.setText("QQ分享内容");shareParams.setTitle("QQ分享标题");shareParams.setImageUrl("https://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png");shareParams.setShareType(Platform.SHARE_WEBPAGE);shareParams.setUrl("https://www.mob.com/");//设置分享事件回调(注:回调放在不能保证在主线程调用,不可以在里面直接处理UI操作)platform.setPlatformActionListener(new PlatformActionListener() { @Override public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { //分享成功 } @Override public void onError(Platform platform, int i, Throwable throwable) { //分享失败 } @Override public void onCancel(Platform platform, int i) { //分享取消 }});platform.share(shareParams);
复制代码
效果图
授权示例
Platform qq = ShareSDK.getPlatform(QQ.NAME);qq.setPlatformActionListener(new PlatformActionListener() { @Override public void onComplete(Platform platform, int i, final HashMap<String, Object> hashMap) { Log.d("ShareSDK", platform.getDb().exportData()); } @Override public void onError(Platform platform, int i, Throwable throwable) { } @Override public void onCancel(Platform platform, int i) { }});qq.SSOSetting(false);qq.showUser(null);
复制代码
返回信息示例
在 ShareSDK 成功回调中调用 platform.getDb().exportData(),将返回以下信息。
{ "unionid": "UID_xxxxxxAFF0CC0E874D4379426F8FD90F", "gender": "0", "pay_token": "792ExxxxxxD0271D28CDF474323548B4", "icon": "http:\/\/thirdqq.qlogo.cn\/ek_qqapp\/AQScMjx9peEMBflnOzdBEGricOB5WTZYaazmyzRMUv0DpBnPZicrlq385e9ELHtR0toMqKU60r\/100", "secret": "", "userID": "E3E7xxxxxx03632CC7E38F165C6D75F3", "expiresTime": 1720668163859, "token": "73DFxxxxxFADA8C4C3D3A9325046F16", "expiresIn": 5184000, "pfkey": "1935xxxxxx72f9771787a14015f43df8", "pf": "desktop_m_qq-10000144-android-2002-", "secretType": "0", "nickname": "以xxx後", "iconQzone": "http:\/\/thirdqq.qlogo.cn\/ek_qqapp\/AQScMjx9peEMBflnOzdBEGricOB5WTZYaazmyzRMUv0DpBnPZicrlq385e9ELHtR0toMqKU60r\/100"}
复制代码
iOS
在集成 QQ 相关能力之前,请先按照ShareSDK集成指南完成 ShareSDK 的集成。
SDK 集成
添加白名单
在项目的 info.plist 中添加 Queried URL Schemes,类型为 Array,然后添加一个需要支持的项目,类型为字符串类型,添加:mqqopensdknopasteboardios16,mqqopensdknopasteboard,mqq,mqzone,mggopensdklaunchminiapp,mqqopensdkapiV2,tim,mqqapi,mgq
配置 scheme
打开项目的 Info 选项,然后选择 URL Types,添加对应平台的 URL Scheme 配置,如下图:
配置 universalink
选择 Target,点击 Capability,选择 Associated Domains,并双击添加,然后点击“+”号,添加 Universal link,添加形式为:applinks:XXX,XXX 为您 Universal link 的域名,如下图
初始化 SDK
在使用 QQ 能力之前,需要先对其初始化,其中 setupQQWithAppId 的值对应 QQ 平台的 APP ID,appkey 对应 QQ 平台中的 APP Key,universalLink 对应的是 QQ 平台的 Universal link。
[ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) {[platformsRegister setupQQWithAppId:@"xxxxxx"appkey:@"xxxxxx"enableUniversalLink:NO universalLink:@"xxxxxxx"];}];
复制代码
分享示例
以下代码示例分享网络链接至 QQ 好友
#import <ShareSDK/ShareSDK.h>NSMutableDictionary *params = [NSMutableDictionary dictionary];
[params SSDKSetupShareParamsByText:@"test" images:[UIImage imageNamed:@"shareImg.png"] url:[NSURL URLWithString:@"http://www.mob.com/"] title:@"title" type:SSDKContentTypeAuto];[ShareSDK share:SSDKPlatformTypeQQ parameters:params onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) { }];
复制代码
效果图
授权示例
#import <ShareSDK/ShareSDK.h>[ShareSDK authorize:SSDKPlatformTypeQQ settings:nil onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) {}];
复制代码
返回信息示例
{ "access_token" = D2F2xxxxxx50FB9AF240F098B4213E16; "expires_in" = "5183999.98635006"; msg = ""; openid = 6950xxxxxxADB10F015EF1A917F42B0C; "pay_token" = 7661xxxxxx290B27570C941871C0BCED; pf = "openmobile_ios"; "pf_key" = d2dbxxxxxx6cc2fde68a3a4c3f26a69a; ret = 0; unionid = "UID_xxxxxx9F91D27B544B5DBFD34C3A336E";}
复制代码
评论