第三方登录是现在app很常用的功能,而这个功能我已经写过两三次了。。。每次都写大同小异的代码真的是很痛苦,而且每次都要根据说明去添加那些依赖库,配置linkFlag什么的,完全是体力活,所以一直想把这部分代码封装一下,方便以后复用。
然后受DWZShareKit的启发,想到可以用cocoaPods来添加依赖库,完成配置,所以赶紧把之前的想法付诸行动,写了个集成第三方登录的库。
具体如何使用及注意事项我已经写在工程的readme里面了,这里来说点其他的。
(说一键集成是夸张的修辞手法啦,申请appKey填写scheme什么的工作还是少不了的啦~)
 
一,思路
CocoaPods如何完成配置,如何工作的咱还没搞懂,所以只能说说我这里是怎么使用的
问题的关键就在 LXMThirdLoginManager.podspec 这个文件中,
.podspec  中有一些描述用的代码
s.libraries  表示这个pod依赖的 苹果官方的库,也就是类似libstdc++.a ,libsqlite.a 等等的a文件;
s.vendored_libraries 就表示用户自己的a文件,比如新浪微博SDK的libWeiboSDK.a ;
s.frameworks 表示pod依赖的 苹果的framework, 比如 UIKit,SystemConfiguration等等
s.vendored_frameworks, 表示pod依赖的自己的framework,比如qqSDK的TencentOpenAPI.framework;
(其他的就不一一列举了,具体的看CocoaPods的官网:https://cocoapods.org/about)
(另外一个貌似是文档的参考地址:http://www.rubydoc.info/github/CocoaPods/Core/Pod/Specification/DSL)
利用这些,把第三方登录SDK所依赖的文件全部加入这个pod中,那CocoaPods在加载这个pod的时候,就会顺便把第三方登录所依赖的库一起加载进去了。这样就不用我们每个工程都配置一次了~~~
CocoaPods会自动加入-ObjC的linkerFlag,这是方便呀~~
 
不过这样也有坏处:
1是各个SDK更新之后这里不会第一时间知道,也就没办法第一时间更新;
2是因为把各个SDK的文件都包含到了这个pod中,导致这个pod文件很大(大概6M),install的时候会比较耗时间,尤其是网速不给力的话,可能会pod不下来。。。
3是提供的方法比较单一,如果要其他功能还需要自己开发
 
但是这个库最大的目的是省我们配置的时间呀!!!想到这里我对它还是比较满意的。
 
 
二,代码实现
就代码的实现来说,这里是想应用下类似工程模式的设计模式,不知道用的对不对。。。
反正就是:
 
用一个统一的管理器(LXMThirdLoginManager)作为外部调用的统一入口,
内部为各个登录类型分别写一个helper类(这些类提供统一的调用接口),完成各自的登录逻辑,
再统一回调manager的方法返回结果(统一的result类)。
 
这样外部调用起来就很简单了,而且如果需要扩展的话,只需要新加一个登录类型和一个helper类,完全不影响其他类型的使用。
再具体的就看代码吧,这个东西还是至少要自己实现一边才能弄明白的。
 
三,吐槽
1,新浪微博必须得工程的bundleID和在其开发平台注册的bundleID一致才能登陆。。。新写个demo还得改下bundleID好麻烦。。。
2,微信创建的移动应用居然要资格认证过了才有登陆权限,认证一下300块还只管用一年,完全不让自己注册个玩啊。。。。
3,qq资格认证居然还要上传身份证照片,要身份证就算了吧还要正反面都要。。。
4,qq貌似得在info.plist文件中添加bundleDisplayName,我没写貌似也没事。。。这是文档太久了?
5,demo里没有可用的appKey和appSecret什么的真不能怪我呀,自己的不能用又不能泄露公司的。。。
6,体力活好累人呀。。。看文档也是个体力活。。。
 
 
 

使用cocoaPods一键集成第三方登录(新浪微博,qq,微信)的更多相关文章

  1. Python 第三方登录 实现QQ 微信 微博 登录

    本人写的AgentLogin,能快速返回QQ.微信.微博第三方用户名信息,主要用于快速登录 用 pip命令安装 pip install AgentLogin 用法 : 导入这个包 from Agent ...

  2. dedecms织梦第三方登录插件-QQ登录、微博登录、微信登录

    织梦程序集成第三方QQ登录.微博登录.微信登录,获取QQ.微博.微信,并存储至数据库,一键注册为网站会员,不用再次填写绑定信息,方便粘贴用户更强. 织梦第三方登录效果 第三方登录插件特点 1.所有文件 ...

  3. 从零玩转第三方登录之QQ登录

    从零玩转第三方登录之QQ登录 前言 在真正开始对接之前,我们先来聊一聊后台的方案设计.既然是对接第三方登录,那就免不了如何将用户信息保存.首先需要明确一点的是,用户在第三方登录成功之后, 我们能拿到的 ...

  4. 基于Vue、Springboot网站实现第三方登录之QQ登录,以及邮件发送

    基于Vue.Springboot实现第三方登录之QQ登录 前言 一.前提(准备) 二.QQ登录实现 1.前端 2.后端 1.application.yml 和工具类QQHttpClient 2.QQL ...

  5. IOS 集成第三方登录

    我使用的是友盟上集成的第三方登录功能,一共使用了三个应用的登录授权,QQ.微信.新浪微博.由于第三方登录授权成功后,需要跳转到一个新的界面,所以这里需要在项目里设置第三方登录的SSO授权.就是必须安装 ...

  6. iOS无处不在详解iOS集成第三方登录(SSO授权登录无需密码)

    链接地址:http://www.it165.net/pro/html/201408/18884.html 1.前言 不多说,第三登录无处不在!必备技能,今天以新浪微博为例. 这是上次写的iOS第三方社 ...

  7. iOS- 无处不在,详解iOS集成第三方登录(SSO授权登录<无需密码>)

    1.前言   不多说,第三登录无处不在!必备技能,今天以新浪微博为例. 这是上次写的iOS第三方社交分享:http://www.cnblogs.com/qingche/p/3727559.html 可 ...

  8. PHP 接入(第三方登录)QQ 登录 OAuth2.0 过程中遇到的坑

    前言 绝大多数网站都集成了第三方登录,降低了注册门槛,增强了用户体验.最近看了看 QQ 互联上 QQ 登录的接口文档.接入 QQ 登录的一般流程是这样的:先申请开发者 -> 然后创建应用(拿到一 ...

  9. 第三方登录(QQ登录)开发流程详解

    原文:http://www.cnblogs.com/it-cen/p/4338202.html 近排由于工作的繁忙,已经一个星期没写博文做分享了,接下来我对网站接入第三方登录----QQ登录的实现逻辑 ...

随机推荐

  1. Android监听来电和去电

    要监听android打电话和接电话,只需下面2步骤1.第一步,写一个Receiver继承自BroadcastReceiver import android.app.Service; import an ...

  2. C#深入.NET平台的软件系统分层开发

    今天我们来讲讲分层开发,你从标题能不能简单的认识一下什么是分层呢? 不懂也没关系,接下来我来给你讲讲. 第一章 软件系统的分层开发 (1)其实分层模式可以这样定义:将解决方案中功能不同的模块分到不同的 ...

  3. C语言的字符串分割

    说起来很有意思,自认为对C语言理解得还是比较深刻的.但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动.每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串, ...

  4. ASP.NET MVC 模块与组件(二)——定制图片验证码

     本着简洁直接,我们就直奔主题吧! 下面是一个生成数字和字母随机组合的验证码类源代码: using System; using System.Drawing; using System.Drawing ...

  5. 再探OAuth2

    原文: http://www.cnblogs.com/Irving/p/4134629.html web:http://oauth.net/2/ rfc: http://tools.ietf.org/ ...

  6. Spring发展历程总结

    目前很多公司的架构,从Struts2迁移到了SpringMVC.你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢? 既然这样,我们从源头说起.Stru ...

  7. (学习笔记)PHP的输出echo和print

    echo 和 print 之间的差异: echo - 能够输出一个以上的字符串 print - 只能输出一个字符串,并始终返回 1 echo语句 echo 或 echo()均可. 输出换行 echo ...

  8. 【Effective Java】7、优先考虑泛型方法

    package cn.xf.cp.ch02.item27; import java.util.HashSet; import java.util.Set; public class Union { / ...

  9. Think_php入口文件配置

    think_php的入口模式有两种方式 1,一个入口文件对应一个项目应用 2,一个入口文件对应所有项目应用 默认情况,入口文件只需要require thinkphp文件夹就可以.比如thinkphp文 ...

  10. selenium启动firefox时加载扩展

    有些时候,我们测试需要用到插件或者已经导入的证书(比如金融和安全加密行业),而selenium启动firefox时会打开一个新的,不含有任何插件和个人证书的firefox(等同于全新安装后第一次打开的 ...