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

最新文章

  1. [转]表结构设计器EZDML介绍说明(包含修改配置文件,修改文本字段属性)
  2. EL表达式的操作符
  3. 【POJ 1035】Spell checker
  4. Strom简介,以及安装,和官方案例测试
  5. [转载] FFMpeg的码率控制
  6. cocos2dx A*算法
  7. 为什么很多语言选择在JVM上实现
  8. stata
  9. PHP进程锁
  10. 完善版封装canvas分享组件
  11. Java坦克大战(四)
  12. (其他)SQL注入(转)
  13. C++ Primer读书笔记(1)
  14. setTimeout闭包常见问题
  15. 9.Solr4.10.3数据导入(post.jar方式和curl方式)
  16. HDFS系列 -- HDFS预研
  17. c malloc分配内存
  18. Ghostscript远程代码执行漏洞利用方法
  19. (a*b)%c 小的技巧
  20. [BZOJ1588][HNOI2002]营业额统计 无旋Treap

热门文章

  1. Django学习笔记-2018.12.08
  2. webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
  3. OOD沉思录 --- 导引
  4. 【转载】Picasso源码解析
  5. 洛谷P1993 小K的农场 [差分约束系统]
  6. 洛谷P3803 【模板】多项式乘法 [NTT]
  7. struts2框架的大致处理流程
  8. Linux通过FTP上传文件到服务器
  9. redis_NoSql入门概述数据模型简介
  10. Codeforces 1037 H. Security