iOS Facebook和Google登录
前言
最近在对接完Google和Facebook登录之后准备对这部分内容做一个小小的总结,方便以后有需要的时候查看。
具体的Google账号申请和Facebook账号的申请在这里就不做介绍了,这部分内容大多也都是产品在操作,我们主要关注的还是我们的代码以及项目配置问题。(下面是项目中的截图)
一、Cocopads导入项目
1 2 | #Google pod 'GoogleSignIn' |
二、配置项目
1、导入GoogleService-Info.plist文件
我还是建议大家直接导入这个文件的,因为你一旦使用其他谷歌服务,还是需要这个文件的,我们一旦介入谷歌登录,后面肯定还是需要其他服务的,比如Firebase数据统计等等。
2、配置URL Types
Google这里我们配置的是前面Plist文件中的REVERSED_CLIENT_ID字段
三、我们接下来看看具体的代码
1、导入头文件
1 2 | /// Google登录 #import <GoogleSignIn/GoogleSignIn.h> |
2、具体的登录代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | /// google登录 /// - Parameters: /// - controller: controller description /// - loginSuccess: loginSuccess description /// - loginFail: loginFail description func loginWithGoogle ( _ controller : BaseViewController , loginSuccess :@ escaping RequestSuccess , loginFail :@ escaping RequestFail ) { let signInConfig = GIDConfiguration ( clientID : String . SDKId . googleClientId ) GIDSignIn . sharedInstance . signIn ( with : signInConfig , presenting : controller ) { result , error in guard error == nil else { let error = ErrorRespond () error . msg = "The google authorization information failed" loginFail ( error ) return } let idToken = result ?. authentication . idToken if ( idToken != nil ) { debugPrint ( result ?. profile ?. email ?? "Email" ) debugPrint ( result ?. userID ?? "userID" ) debugPrint ( idToken ?? "idToken" ) /// 组装需要的数据 处理自己的后续逻辑 } } } |
3、退出登录方法
1 2 3 4 5 | /// Google退出登录 func loginOutWithGoogle () { GIDSignIn . sharedInstance . signOut () } |
1、Facebook关于URL Types的配置前面的截图已经有保存、我们就不在重复说,fb后面的是你的应用ID。
2、导入头文件
1 2 | /// Facebook import FBSDKLoginKit |
3、具体的实现代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | /// Facebook登录 /// - Parameters: /// - controller: controller description /// - loginSuccess: loginSuccess description /// - loginFail: loginFail description func loginWithFaceBook ( _ controller : BaseViewController , loginSuccess :@ escaping RequestSuccess , loginFail :@ escaping RequestFail ) { let loginManager = LoginManager () loginManager . logIn ( permissions : [ "public_profile" , "email" ], from : controller ) { result , error in if error != nil { let error = ErrorRespond () error . msg = "The facebook authorization information failed" loginFail ( error ) } else { debugPrint ( "----------token----------------" ) debugPrint ( result ?. token ?. tokenString ?? "" ) /// 判断token是否获取到 -没有就走错误 if let tokenString = result ?. token ?. tokenString { /// 获取个人资料 Profile . loadCurrentProfile { profile , error in debugPrint ( profile ?. userID ?? "" ) debugPrint ( profile ?. firstName ?? "" ) debugPrint ( profile ?. lastName ?? "" ) debugPrint ( profile ?. email ?? "" ) debugPrint ( profile ?. imageURL ?? "" ) debugPrint ( "--------------------------" ) debugPrint ( result ?. token ?. userID ?? "" ) /// 获取个人信息是否成功 guard error == nil else { let error = ErrorRespond () error . msg = "The facebook authorization information failed" loginFail ( error ) return } /// 组装需要的数据 处理自己的后续逻辑 } } else { let error = ErrorRespond () error . msg = "The facebook authorization information failed" loginFail ( error ) } } } } |
4、退出登录
1 2 3 4 5 6 | /// Facebook退出登录 func loginOutWithFacebook () { let loginManager = LoginManager () loginManager . logOut () } |
## 努力做一个合格的程序员。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话