iOS Facebook和Google登录
前言
最近在对接完Google和Facebook登录之后准备对这部分内容做一个小小的总结,方便以后有需要的时候查看。
具体的Google账号申请和Facebook账号的申请在这里就不做介绍了,这部分内容大多也都是产品在操作,我们主要关注的还是我们的代码以及项目配置问题。(下面是项目中的截图)
一、Cocopads导入项目
#Google pod 'GoogleSignIn'
二、配置项目
1、导入GoogleService-Info.plist文件
我还是建议大家直接导入这个文件的,因为你一旦使用其他谷歌服务,还是需要这个文件的,我们一旦介入谷歌登录,后面肯定还是需要其他服务的,比如Firebase数据统计等等。
2、配置URL Types
Google这里我们配置的是前面Plist文件中的REVERSED_CLIENT_ID字段
三、我们接下来看看具体的代码
1、导入头文件
/// Google登录 #import <GoogleSignIn/GoogleSignIn.h>
2、具体的登录代码如下
/// 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、退出登录方法
/// Google退出登录 func loginOutWithGoogle() { GIDSignIn.sharedInstance.signOut() }
1、Facebook关于URL Types的配置前面的截图已经有保存、我们就不在重复说,fb后面的是你的应用ID。
2、导入头文件
/// Facebook import FBSDKLoginKit
3、具体的实现代码
/// 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、退出登录
/// Facebook退出登录 func loginOutWithFacebook() { let loginManager = LoginManager() loginManager.logOut() }
## 努力做一个合格的程序员。