zoukankan      html  css  js  c++  java
  • iOS--通过MOB平台实现第三方登录与分享

     适合刚开始接触第三方登录与分享的IOS小白!!

    这两天看了一下有关IOS第三方登录与分享的一些知识,发现在QQ开放平台与微信开放平台实现这些功能很繁琐,不容易实现,在导师的推荐下,找到了这样一个平台

    http://mob.com  MOB云平台,通过这一个平台就可以实现大部分的第三方登录与分享,比如常见的QQ,微信,新浪微博等等.

    废话不多说,开始吧!先说第三方分享吧!

    一 .第三方分享

    1.获取AppKey

      在Mob的官网注册应用得到appkey,请点击链接看里面的操作步骤。

    2.下载SDK

      具体参照Mob官网.

    3.集成

      1.将下载好的SDK导入你的项目

      

      2.添加依赖库(每个平台所需库不一样,这里是新浪微博与QQ,微信所需的库)

      

      3.设置ShareSDK的Appkey并初始化对应的第三方社交平台 打开*AppDelegate.m(*代表你的工程名字)导入头文件

      

      

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        /**
         *  设置ShareSDK的appKey
         *  在将生成的AppKey传入到此方法中。
         *  方法中的第二个第三个参数为需要连接社交平台SDK时触发,
         *  在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。
         *  如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。
         */
        [ShareSDK registerApp:@"1c72a06f47e6c"
              activePlatforms:@[@(SSDKPlatformTypeSinaWeibo),
                                @(SSDKPlatformTypeWechat),
                                @(SSDKPlatformTypeQQ)]
                     onImport:^(SSDKPlatformType platformType) {
                         switch (platformType) {
                             case SSDKPlatformTypeWechat:
                                 [ShareSDKConnector connectWeChat:[WXApi class]];
                                 break;
                             case SSDKPlatformTypeQQ:
                                 [ShareSDKConnector connectQQ:[QQApiInterface class]tencentOAuthClass:[TencentOAuth class]];
                                 break;
                             case SSDKPlatformTypeSinaWeibo:
                                 [ShareSDKConnector connectWeibo:[WeiboSDK class]];
                                 break;
                                 
                                 
                             default:
                                 break;
                         }
                     }
              onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) {
                  switch (platformType) {
                      case SSDKPlatformTypeWechat:
                          [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885"
                                                appSecret:@"64020361b8ec4c99936c0e3999a9f249"];
                          break;
                      case SSDKPlatformTypeQQ:
                          [appInfo SSDKSetupQQByAppId:@"100371282"
                                               appKey:@"aed9b0303e3ed1e27bae87c33761161d"
                                             authType:SSDKAuthTypeBoth];
                          break;
                      case SSDKPlatformTypeSinaWeibo:
                          //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
                          [appInfo SSDKSetupSinaWeiboByAppKey:@"568898243"
                                                    appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3"
                                                  redirectUri:@"http://www.sharesdk.cn"
                                                     authType:SSDKAuthTypeBoth];
                          break;
                          
                      default:
                          break;
                  }
                  
              }];
        
        
        
        return YES;
    }

      4.添加实现代码 打开需要集成分享功能的视图源码

    - (IBAction)actionBtnShare:(id)sender {
        NSLog(@"点击了分享");
        
        //1、创建分享参数
        NSArray* imageArray = @[[UIImage imageNamed:@"shareImg"]];
        //(注意:图片必须要在Xcode左边目录里面,名称必须要传正确,如果要分享网络图片,可以这样传iamge参数 images:@[@"http://mob.com/Assets/images/logo.png?v=20150320"])
        if (imageArray) {
            
            NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
            [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                             images:imageArray
                                                url:[NSURL URLWithString:@"http://mob.com"]
                                              title:@"分享标题"
                                               type:SSDKContentTypeAuto];
            //有的平台要客户端分享需要加此方法,例如微博
            [shareParams SSDKEnableUseClientShare];
            //2、分享(可以弹出我们的分享菜单和编辑界面)
            /**
             *  显示分享菜单
             *
             *   view                     要显示菜单的视图, iPad版中此参数作为弹出菜单的参照视图
             *   items                    菜单项,如果传入nil,则显示已集成的平台列表
             *   shareParams              分享内容参数
             *   shareStateChangedHandler 分享状态变更事件
             *
             *   分享菜单控制器
             */
            SSUIShareActionSheetController *sheet = [ShareSDK showShareActionSheet:nil
                                     items:nil
                               shareParams:shareParams
                       onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
                           
                           switch (state) {
                               case SSDKResponseStateSuccess:
                               {
                                   NSLog(@"分享成功");
                                   break;
                               }
                               case SSDKResponseStateFail:
                               {
                                   NSLog(@"分享失败");
                                   break;
                               }
                               default:
                                   break;
                           }
                       }
             ];
            
            //默认都是跳转到APP的编辑页面去编辑的
            
            //加了这个方法之后可以不跳分享编辑界面,直接点击分享菜单里的选项,直接分享
            //[sheet.directSharePlatforms addObject:@(SSDKPlatformTypeSinaWeibo)];
            //默认微信,QQ,QQ空间都是直接跳客户端分享,加了这个方法之后,可以跳分享编辑界面分享
            //[sheet.directSharePlatforms removeObject:@(SSDKPlatformTypeWechat)];
        }
        
    }

      代码到这里就结束了,看一下最终效果:

      

    4.注意事项:

      1.微信,QQ这些第三方平台要实现分享必须添加各自真实的URL Types(图片里面的是测试KEY,可以使用)

      

      我这里只是简略的配了下图,具体的见MobIOS集成手册 http://wiki.mob.com/ios简洁版快速集成/

      2.plist 文件的配置

      

      添加白名单:

          

        这里的白名单仅仅是新浪微博与QQ,微信的数据,其他平台的数据见Mob集成注意手册.

      3.新浪微博SDK需要在项目Build Settings中的Other Linker Flags添加"-ObjC"

       4.如果出现的分享页面不是中文,这样设置:

      

    二.第三方登录

    如果你已经实现了第三方分享,那么实现第三方登录将十分简单

    其他配置一样,只是实现的代码需要修改

    //QQ 登录
    - (IBAction)actionBtnLogin:(id)sender {
        NSLog(@"点击了登录");
        
            
        //QQ登录
        [ShareSDK getUserInfo:SSDKPlatformTypeQQ
               onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
         {
             if (state == SSDKResponseStateSuccess)
             {
                 
                 NSLog(@"uidQQ=%@",user.uid);
                 NSLog(@"credentialQQ=%@",user.credential);
                 NSLog(@"tokenQQ=%@",user.credential.token);
                 NSLog(@"nicknameQQ=%@",user.nickname);
                 _showText.text = [NSString stringWithFormat:@"欢迎您,%@",user.nickname];
             }
             
             else
             {
                 NSLog(@"%@",error);
             }
             
         }];
            
        
    }

    //微信登录

    //微信登录
    - (IBAction)actionWeixinLogin:(id)sender {
        //QQ登录
        [ShareSDK getUserInfo:SSDKPlatformTypeWechat
               onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
         {
             if (state == SSDKResponseStateSuccess)
             {
                 
                 NSLog(@"uidWechat=%@",user.uid);
                 NSLog(@"credentialWechat=%@",user.credential);
                 NSLog(@"tokenWechat=%@",user.credential.token);
                 NSLog(@"nicknameWechat=%@",user.nickname);
                 _showText.text = [NSString stringWithFormat:@"欢迎您,%@",user.nickname];
             }
             
             else
             {
                 NSLog(@"%@",error);
             }
             
         }];
        
    }

    效果图:

    2019.5.17 更新:代码已经很老了,可能有的代码会报错,最好去MOB官网看看如何集成!

      

     

  • 相关阅读:
    闭包
    TCL
    [Go] gin框架渲染html字符串
    [Go] 使用packr包把静态文件打包进二进制内
    [javascript] 获取正则子表达式里的内容
    [redis] Zremrangebylex命令移除元素令人困惑不能理解
    [Go] 获取文件夹下面指定模式的文件列表 , 并且获取文件创建时间删除超过30分钟的文件
    [vuejs] 聊天框在overflow:auto中填数据时滚动到底部
    [vuejs] 在vuejs中使用websocket进行实时通讯
    Egret顶级开发者—李昌平
  • 原文地址:https://www.cnblogs.com/qiyiyifan/p/6640181.html
Copyright © 2011-2022 走看看