本篇文档主要讲解如何使用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";
}