iOS集成友盟第三方登录

作者: 青梅煮码 | 来源:发表于2017-05-10 20:33 被阅读1017次

    可以参考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文件中配置,在

    - (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);
            }];
    }
    
    ```

    相关文章

      网友评论

        本文标题:iOS集成友盟第三方登录

        本文链接:https://www.haomeiwen.com/subject/yoogtxtx.html