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

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 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";

}