可以参考demo来做,demo是可以跑起来的,如果用demo,只需要把key和ID换掉就好了,点击下载demo
注册APPKey
去友盟注册新AppKey拿到注册的AppKey
导入SDK
导入友盟提供的SDK,其目录结构如下
只需要将UMSocial导入项目中,接下来配置SDK
配置
在Build Settings
->Other Linker Flags
加入-ObjC
如图所示
设置Web支持HTTP
因为iOS目前不支持HTTP,所以在web登录中还需要配置HTTP,配置方法如下:
在Info-plist
文件中添加App Transport Security Settings
其类型为Dictionary
,然后在App Transport Security Settings
中添加Allow Arbitrary Loads
,其类型为BOOL,将其修改为YES
配置成功如下:
添加依赖库
友盟依赖库
libsqlite3.tbd
CoreGraphics.framework
微信依赖库
SystemConfiguration.framework
CoreTelephony.framework
libsqlite3.tbd
libc++.tbd
libz.tbd
QQ依赖库
SystemConfiguration.framework
libc++.tbd
微博依赖库
SystemConfiguration.framework
CoreTelephony.framework
ImageIO.framework
libsqlite3.tbd
-
libz.tbd
导入的库如图:
设置白名单&Schemes
- 设置SSO白名单
配置白名单小技巧,右击Info.plist文件,选择文本编辑器打开,将下面代码直接copy进去,没必要为这些东西浪费时间
LSApplicationQueriesSchemes
wechat
weixin
sinaweibohd
sinaweibo
sinaweibosso
weibosdk
weibosdk2.5
mqqapi
mqq
mqqOpensdkSSoLogin
mqqconnect
mqqopensdkdataline
mqqopensdkgrouptribeshare
mqqopensdkfriend
mqqopensdkapi
mqqopensdkapiV2
mqqopensdkapiV3
mqqopensdkapiV4
mqzoneopensdk
wtloginmqq
wtloginmqq2
mqqwpa
mqzone
mqzonev2
mqzoneshare
wtloginqzone
mqzonewx
mqzoneopensdkapiV2
mqzoneopensdkapi19
mqzoneopensdkapi
mqqbrowser
mttbrowser
- 配置Schemes
来到Info
->URL Types
配置Schemes
平台 | APPKey | 举例 | 注意
:--- | ------:---- | -----:
QQ | 100424468 | tencent100424468 | QQ需要添加tencent
微信 | wxdc1e388c3822c80b| wxdc1e388c3822c80b | 微信直接用
微博 | 3921700954 | wb3921700954 | 微博添加wb
配置如图所示:
使用
注册平台
导入SDK头文件#import
在AppDelegate.m文件中配置,在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中注册友盟的AppKey
//设置AppKey,是在友盟注册之后给到的key
[[UMSocialManager defaultManager] setUmSocialAppkey:UMKEY];
然后注册各个平台的AppKey和AppID
// setPlaform是要注册的平台
/* 微信聊天 */
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b" appSecret:@"3baf1193c85774b3fd9d18447d76cab0" redirectURL:@"http://mobile.umeng.com/social"];
/*QQ*/
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1106152098" appSecret:@"KexLaOiU6VVzxgQb" redirectURL:@"http://mobile.umeng.com/social"];
/*
注**
redirectURL必须要和微博设置的回调一致
*/
/* 新浪 */
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"1234957746" appSecret:@"b3564b393bfcb42672d8e84f084ea550" redirectURL:@"https://sns.whalecloud.com/sina2/callback"];
设置回调
在AppDelegate.m中添加以下方法设置回调
// 支持所有iOS系统版本回调
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];
if (!result) {
// 其他如支付等SDK的回调
}
return result;
}
使用
导入SDK头文件#import
- QQ授权登录
- (void)QQLogin{
/**
设置QQ授权登录
@param platformType 平台
@param result 授权成功
@param error 授权失败
*/
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_QQ currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
} else {
UMSocialUserInfoResponse *resp = result;
// 授权信息
NSLog(@"QQ uid: %@", resp.uid);
NSLog(@"QQ openid: %@", resp.openid);
NSLog(@"QQ accessToken: %@", resp.accessToken);
NSLog(@"QQ expiration: %@", resp.expiration);
// 用户信息
NSLog(@"QQ name: %@", resp.name);
NSLog(@"QQ iconurl: %@", resp.iconurl);
NSLog(@"QQ gender: %@", resp.gender);
// 第三方平台SDK源数据
NSLog(@"QQ originalResponse: %@", resp.originalResponse);
}
}];
}
- 微信登录
/** 微信授权登录 */
- (void)WeChatLogin{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_WechatSession currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
} else {
UMSocialUserInfoResponse *resp = result;
// 授权信息
NSLog(@"Wechat uid: %@", resp.uid);
NSLog(@"Wechat openid: %@", resp.openid);
NSLog(@"Wechat accessToken: %@", resp.accessToken);
NSLog(@"Wechat refreshToken: %@", resp.refreshToken);
NSLog(@"Wechat expiration: %@", resp.expiration);
// 用户信息
NSLog(@"Wechat name: %@", resp.name);
NSLog(@"Wechat iconurl: %@", resp.iconurl);
NSLog(@"Wechat gender: %@", resp.gender);
// 第三方平台SDK源数据
NSLog(@"Wechat originalResponse: %@", resp.originalResponse);
}
}];
}
- 新浪微博登录
/** 新浪授权登录 */
- (void)SinaLogin{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_Sina currentViewController:self completion:^(id result, NSError *error) {
UMSocialUserInfoResponse *resp = result;
// 第三方登录数据(为空表示平台未提供)
// 授权数据
NSLog(@" uid: %@", resp.uid);
NSLog(@" openid: %@", resp.openid);
NSLog(@" accessToken: %@", resp.accessToken);
NSLog(@" refreshToken: %@", resp.refreshToken);
NSLog(@" expiration: %@", resp.expiration);
// 用户数据
NSLog(@" name: %@", resp.name);
NSLog(@" iconurl: %@", resp.iconurl);
NSLog(@" gender: %@", resp.gender);
// 第三方平台SDK原始数据
NSLog(@" originalResponse: %@", resp.originalResponse);
}];
}
```