使用Shares实现第三方登陆

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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);
         }
        
     }];
}

以上是关于使用Shares实现第三方登陆的主要内容,如果未能解决你的问题,请参考以下文章

使用overtrue/socialite实现第三方登陆

实现百度第三方登陆详细解答

Java web 实现第三方微博账号登陆的功能

百度知道登陆时出现第三方登陆是啥意思

Android第三方QQ登陆

怎么实现第三方登录