iOS Facebook和Google登录

前言


      最近在对接完Google和Facebook登录之后准备对这部分内容做一个小小的总结,方便以后有需要的时候查看。

      具体的Google账号申请和Facebook账号的申请在这里就不做介绍了,这部分内容大多也都是产品在操作,我们主要关注的还是我们的代码以及项目配置问题。(下面是项目中的截图)

 

Google


 

      一、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()
}

 

Facebook


 

      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()
}

 

posted @   MrRisingSun  阅读(536)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示