iOS集成友盟第三方登录

可以参考demo来做,demo是可以跑起来的,如果用demo,只需要把key和ID换掉就好了,点击下载demo

注册APPKey

去友盟注册新AppKey拿到注册的AppKey

导入SDK

导入友盟提供的SDK,其目录结构如下


iOS集成友盟第三方登录_第1张图片
导入SDK

只需要将UMSocial导入项目中,接下来配置SDK

配置

Build Settings->Other Linker Flags加入-ObjC
如图所示

iOS集成友盟第三方登录_第2张图片
Other Linker Flags

设置Web支持HTTP

因为iOS目前不支持HTTP,所以在web登录中还需要配置HTTP,配置方法如下:
Info-plist文件中添加App Transport Security Settings其类型为Dictionary,然后在App Transport Security Settings中添加Allow Arbitrary Loads,其类型为BOOL,将其修改为YES

配置成功如下:


iOS集成友盟第三方登录_第3张图片
配置Info.plist文件

添加依赖库

  • 友盟依赖库

  • 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
    导入的库如图:


    iOS集成友盟第三方登录_第4张图片
    导入的库

设置白名单&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

配置如图所示:

iOS集成友盟第三方登录_第5张图片
配置Schemes

使用

注册平台

导入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);
        }];
}

```

你可能感兴趣的:(iOS集成友盟第三方登录)