iOS Facebook和Google登录
2023-06-13 09:15:41 时间
前言
最近在对接完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()
}
相关文章
- iOS小技能: 用纯代码开发界面的过程 & 图片使用的相关注意事项
- iOS小技能:参数名ASCII码从小到大排序、对象数组排序
- 代码显示苹果 iOS 16.2 将允许 iPhone 更频繁刷新“实时活动”,但也更加耗电
- ios--无安装证书打包ipa
- IOS – OpenGL ES 黑白网状效果 GPUImageCrosshatchFilter
- 批量上传iOS应用程序截图的实用技巧
- iOS 设置每天下午4点推送本地通知详解手机开发
- iOS 动画退出应用代码详解手机开发
- iOS:压缩图片详解手机开发
- appLinux开发探索之路:从iOS APP开始(linux开发ios)
- Linux下开发iOS应用:挑战还是机会?(linux做ios开发)
- 让Linux开发iOS应用变得更简单(linux开发ios应用)
- 在iOS上安装Linux系统的挑战(ios上安装linux)
- 基于Linux环境下iOS应用开发实践(linux下开发ios)
- iOS开发与Linux的技术融合(ios开发linux)
- 轻松下载Linux与iOS系统,享受高效的操作体验(linuxios下载)
- iOS 轻松登录 Oracle 数据库(ios 登陆oracle)