iOS集成友盟第三方登录

来源:互联网 发布:数据库置疑修复工具 编辑:程序博客网 时间:2024/05/16 11:36

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

注册APPKey

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

导入SDK

导入友盟提供的SDK,其目录结构如下
导入SDK
只需要将UMSocial导入项目中,接下来配置SDK

配置

Build Settings->Other Linker Flags加入-ObjC
如图所示
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

配置成功如下:
配置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
      导入的库如图:
      导入的库

设置白名单&Schemes

  • 设置SSO白名单
    配置白名单小技巧,右击Info.plist文件,选择文本编辑器打开,将下面代码直接copy进去,没必要为这些东西浪费时间
<key>LSApplicationQueriesSchemes</key><array>    <!-- 微信 URL Scheme 白名单-->    <string>wechat</string>    <string>weixin</string>    <!-- 新浪微博 URL Scheme 白名单-->    <string>sinaweibohd</string>    <string>sinaweibo</string>    <string>sinaweibosso</string>    <string>weibosdk</string>    <string>weibosdk2.5</string>    <!-- QQ、Qzone URL Scheme 白名单-->    <string>mqqapi</string>    <string>mqq</string>    <string>mqqOpensdkSSoLogin</string>    <string>mqqconnect</string>    <string>mqqopensdkdataline</string>    <string>mqqopensdkgrouptribeshare</string>    <string>mqqopensdkfriend</string>    <string>mqqopensdkapi</string>    <string>mqqopensdkapiV2</string>    <string>mqqopensdkapiV3</string>    <string>mqqopensdkapiV4</string>    <string>mqzoneopensdk</string>    <string>wtloginmqq</string>    <string>wtloginmqq2</string>    <string>mqqwpa</string>    <string>mqzone</string>    <string>mqzonev2</string>    <string>mqzoneshare</string>    <string>wtloginqzone</string>    <string>mqzonewx</string>    <string>mqzoneopensdkapiV2</string>    <string>mqzoneopensdkapi19</string>    <string>mqzoneopensdkapi</string>    <string>mqqbrowser</string>    <string>mttbrowser</string></array>
  • 配置Schemes

来到Info->URL Types配置Schemes

平台 APPKey 举例 注意 QQ 100424468 tencent100424468 QQ需要添加tencent 微信 wxdc1e388c3822c80b wxdc1e388c3822c80b 微信直接用 微博 3921700954 wb3921700954 微博添加wb

配置如图所示:

配置Schemes

使用

注册平台

导入SDK头文件#import <UMSocialCore/UMSocialCore.h>

在AppDelegate.m文件中配置,在application:application didFinishLaunchingWithOptions:方法中添加

- (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 <UMSocialCore/UMSocialCore.h>

* 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);        }];}
0 1
原创粉丝点击