• 使用Shares实现第三方登陆


    第一步注册获取AppKey,就是所谓的唯一标识
    注册的步骤:官网注册应用得到appkey,请点击链接看里面的操作步骤。
     
    第二步下载SDK:
    获取ShareSDK-iOS v3.x:下载地址
     
    第三步集成SDK
    在Build Phases中的Link Binary With Libraries中添加对应的framework
    如果添加时候找不到,那么就需要点击add other按钮进行添加
    {
    进入时候会出现一个finder的界面,然后点击command+shift+G就见到上边一一串地址
    然后把这串地址改为/usr/lib就可以在里面见到你需要的特殊framework,然后添加
    }
    必须添加的依赖库如下(Xcode 7 下 *.dylib库后缀名更改为*.tbd):
    • libicucore.dylib
    • libz.dylib
    • libstdc++.dylib
    • JavaScriptCore.framework
    以下依赖库根据社交平台添加:
    新浪微博SDK依赖库 
    • ImageIO.framework
    • libsqlite3.dylib
    QQ好友和QQ空间SDK依赖库 
    • libsqlite3.dylib
    微信SDK依赖库 
    • libsqlite3.dylib
    短信和邮件需要依赖库 
    • MessageUI.framework
     
    第四步:
    因为iOS9苹果需要将http要改为https的,因为苹果想应用更加安全
    所以我们需要在Info.plist中添加
    {
    App Transport Security Settings类型为字典
    然后再在这个字典中添加Allow Arbitrary Loads类型为Boolean 把Value改为YES
    然后就可以咯
    }
    然后再次运行时候就不会报错咯
     
    OK现在我们来实现登陆:
    第一、我们先告诉shares平台我们的appkey、想要跳转的平台、告诉想要跳转平台你的软件在这个想跳转平台中的appid和appkey和授权方式
    这样我们就完成咯一大步骤授权:
     
    第二、我们需要匹配URL Types
    举例QQ:QQ+你QQ号码16进制, tencent+你的QQ号码
     
    第三、
    配置白名单:

    各平台OpenURL白名单说明

    新浪微博

    • sinaweibo,
    • sinaweibohd,
    • sinaweibosso,
    • sinaweibohdsso,
    • weibosdk,
    • weibosdk2.5
    • [后两个若导入新浪SDK则需要]

    腾讯微博

    • TencentWeibo,
    • tencentweiboSdkv2
    • [控制台会提示这两个,但是腾讯微博SDK已经弃用,可以忽略不配置]

    豆瓣

    • 无需配置

    开心网

    • 无需配置

    微信

    • wechat,
    • weixin

    易信

    • yixin,
    • yixinopenapi

    支付宝

    • alipay,
    • alipayshare

    QQ

    • mqqOpensdkSSoLogin, 
    • mqqopensdkapiV2,
    • mqqopensdkapiV3,
    • wtloginmqq2,
    • mqq,
    • mqqapi

    QZONE

    • mqzoneopensdk, 
    • mqzoneopensdkapi,
    • mqzoneopensdkapi19,
    • mqzoneopensdkapiV2,
    • mqqOpensdkSSoLogin,
    • mqqopensdkapiV2,
    • mqqopensdkapiV3,
    • wtloginmqq2,
    • mqqapi,
    • mqqwpa,
    • mqzone,
    • mqq

    [注:若同时使用QQ和QZONE,则直接添加本格即可]

    Google+

    • googlechrome, 
    • googlechrome-x-callback,
    • hasgplus4,
    • com.google.gppconsent,
    • com.google.gppconsent.2.2.0,
    • com.google.gppconsent.2.3.0,
    • com.google.gppconsent.2.4.0,
    • com.google.gppconsent.2.4.1

    人人网

    • renrenapi,
    • renrenios,
    • renreniphone,
    • renren,
    • 以及在使用人人SDK时所需配置的URL Scheme,例如:rm226427com.mob.demoShareSDK

    Facebook

    • fbauth2

    Twitter

    • 无需配置

    Pocket

    • pocket-oauth-v1

    Pinterest

    • pinit

    Instagram

    • instagram

    WhatsApp

    • whatsapp

    Line

    • line

    KakaoTalk

    • kakaolink

    KaokaoStory

    • storylink

    LinkedIn

    • 无需配置

    Tumblr

    • 无需配置

    非平台类,如短信,复制,邮件等

    • 无需配置
     
     
    这样就可以是实现你想要的效果咯
     
    以下就是第三方登陆的代码与自己的实现
    registerApp:你在平台上的appkey,平台会通过这个key辨别你是否可以授权
    activePlatforms:告诉平台你要跳转到那个界面   例如:SSDKPlatformTypeQQ跳到QQ授权
    platformType:你要告诉QQ平台你这个软件是否可以在QQ中授权,然后QQ就是通过SSDKSetupQQByAppId:唯一标识去查看是否可以授权 
    authType:授权状态
     
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [ShareSDK registerApp:@“c5”
        
              activePlatforms:@[@(SSDKPlatformTypeQQ),@(SSDKPlatformTypeWechat),@(SSDKPlatformTypeSinaWeibo)]
                     onImport:^(SSDKPlatformType platformType)
         {
             switch (platformType)
             {
                 case SSDKPlatformTypeQQ:
                     [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
                     break;
                    
                 case SSDKPlatformTypeWechat:
                     [ShareSDKConnector connectWeChat:[WXApi class] delegate:self];
                     break;
                   
                 case SSDKPlatformTypeSinaWeibo:
                     [ShareSDKConnector connectWeibo:[WeiboSDK class]];
                     break;
                    
                 default:
                     break;
             }
         }
              onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo)
         {
            
             switch (platformType)
             {
                 case SSDKPlatformTypeQQ:
                     [appInfo SSDKSetupQQByAppId:@"1"
                                          appKey:@"8TbGd1"
                                        authType:SSDKAuthTypeBoth];
                     break;
                    
                 case SSDKPlatformTypeWechat:
                     [appInfo SSDKSetupWeChatByAppId:@"wxfd343f"
                                           appSecret:@"d4647af5443d"];
                     break;
                    
                 case SSDKPlatformTypeSinaWeibo:
                     [appInfo SSDKSetupSinaWeiboByAppKey:@"2596272"
                                               appSecret:@"366d6b89e51bfa13"
                                             redirectUri:@"http:”// 回调地址
                                                authType:SSDKAuthTypeBoth];
                     break;
                    
                 default:
                     break;
             }
         }];
     
        return YES;
    }
     
    点击的操作
    三个登陆的点击事件处理是一样的,传的平台不一样就可以咯getUserInfo:SSDKPlatformTypeSinaWeibo这个
    - (void)weiBoButtonClick
    {
        [ShareSDK getUserInfo:SSDKPlatformTypeSinaWeibo
               onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
         {
             if (state == SSDKResponseStateSuccess)// 成功就会获取到平台的个人资料
             {
                 NSLog(@"uid=%@",user.uid);
                 NSLog(@"%@",user.credential);
                 NSLog(@"token=%@",user.credential.token);
                 NSLog(@"nickname=%@",user.nickname);
                
                 YiQiGanDianShaViewController *ganDianShaViewController = [[YiQiGanDianShaViewController alloc] init];
                 [self presentViewController:ganDianShaViewController animated:YES completion:nil];
             }
            
             else
             {
                 NSLog(@"%@",error);
             }
            
         }];
    }
  • 相关阅读:
    【VUE】自定义组件
    【docker】Dockerfile
    【docker】常用命令
    【Java Web开发学习】跨域请求
    xshell6和xftp6运行提示缺少mfc110u.dll文件的解决办法
    【NPM】使用问题记录
    【Zuul】使用学习
    第八章 泛型程序设计
    第九章 集合
    分布式系列二: 分布式系统的通信
  • 原文地址:https://www.cnblogs.com/happyEveryData/p/5531860.html
Copyright © 2020-2023  润新知