zoukankan      html  css  js  c++  java
  • iOS:shareSDK第三方登录

    shareSDK第三方登录跟分享差不多,比较简单,前面已有介绍。这里简单写一下第三方登录吧。

    1、首先:我用到了QQ、微信、新浪这三个平台的登录,需要到它们各自的开发者平台注册开发者账号,这是我的QQ创建应用截图,因为没有导入app的应用图标,所以未审核,但是仍然会生成可用的AppID和App KEY,可以自己接着完善信息提交审核。

    2、其次:下载ShareSDK包,将需要的文件导入项目中。这里推荐使用CocoaPods,它可以直接帮助导入所有的依赖库,避免麻烦。我导入的格式如下:

    pod 'ShareSDK3'

    pod 'MOBFoundation'

    pod 'ShareSDK3/ShareSDKPlatforms/QQ'

    pod 'ShareSDK3/ShareSDKPlatforms/SinaWeibo'

    pod 'ShareSDK3/ShareSDKPlatforms/WeChat'

    3、然后:使用各个平台的appkey或者appid去注册ShareSDK应用,代码如下:

    @implementation AppDelegate (KJShareSDk)
    
    -(void)shareApplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
        
        /**
         *  设置ShareSDK的appKey,如果尚未在ShareSDK官网注册过App,请移步到http://mob.com/login 登录后台进行应用注册,
         *  在将生成的AppKey传入到此方法中。
         *  方法中的第二个第三个参数为需要连接社交平台SDK时触发,
         *  在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。
         *  如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。
         */
        [ShareSDK registerApp:shareSDK_AppKey
         
              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 SSDKPlatformTypeSinaWeibo:
                     //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
                     [appInfo SSDKSetupSinaWeiboByAppKey:sinaWiebo_AppKey
                                                appSecret:sinaWiebo_AppSecret
                                                redirectUri:sinaWiebo_RedirectUri
                                                authType:SSDKAuthTypeBoth];
                     break;
                 case SSDKPlatformTypeWechat:
                     [appInfo SSDKSetupWeChatByAppId:wechat_AppId
                                           appSecret:wechat_AppSecret];
                     break;
                 case SSDKPlatformTypeQQ:
                     [appInfo SSDKSetupQQByAppId:qq_AppId
                                          appKey:qq_AppKey
                                        authType:SSDKAuthTypeBoth];
                     break;
                 default:
                     break;
             }
         }];
    }
    @end

    4、接着:去项目中的info下的URL Types设置白名单,用来支持客户端的跳转,参照官方截图如下:

    这是我的截图:

    6、开始调用集成的方法,进三方登录即可,只要代码如下:

    方法一:

    //例如QQ的登录
    [ShareSDK getUserInfo:SSDKPlatformTypeQQ
               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);
            //在这里面实现app界面的跳转:
            1.如果用户将qq和app已经进行了绑定,直接登录成功就能拿到用户的数据;
            2.如果用户没有将qq和app进行绑定,那么绑定成功后就会从服务器获取到token,这个token是用来获取用户数据的,很重要。
            总之:每一个用户都有自己唯一的标识,使用第三方登录,第三方是不知道用户的账号和密码的,那么用户必须先绑定,绑定成功后,服务器返回这个标识,之后服务器通过这个标识才能获取到用户的数据。
    } else { NSLog(@"%@",error); } }];

    方法二:

    / 导入头文件
    #import <ShareSDKExtension/SSEThirdPartyLoginHelper.h>
     
    [SSEThirdPartyLoginHelper loginByPlatform:SSDKPlatformTypeQQ
                                       onUserSync:^(SSDKUser *user, SSEUserAssociateHandler associateHandler) {
     
                                           //在此回调中可以将社交平台用户信息与自身用户系统进行绑定,最后使用一个唯一用户标识来关联此用户信息。
                                           //在此示例中没有跟用户系统关联,则使用一个社交用户对应一个系统用户的方式。将社交用户的uid作为关联ID传入associateHandler。
                                           associateHandler (user.uid, user, user);
                                            NSLog(@"dd%@",user.rawData);
                                             NSLog(@"dd%@",user.credential);
     
                                       }
                                    onLoginResult:^(SSDKResponseState state, SSEBaseUser *user, NSError *error) {
     
                                        if (state == SSDKResponseStateSuccess)
                                        {
     
                                        }
     
    }];
  • 相关阅读:
    判断元素的属性是否存在
    js 查找树节点 数组去重
    redis 基础知识
    jQuey知识点三 解析json数据
    jQuery知识点二 实现隔行变色
    mysql 基础操作一
    ruby 基础知识三 读写文件
    Active Record 数据迁移
    ruby 基础知识(二)
    rails 常用的知识点
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/5514805.html
Copyright © 2011-2022 走看看