前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS Facebook和Google登录

iOS Facebook和Google登录

作者头像
Mr.RisingSun
发布2022-12-07 13:39:20
1.2K0
发布2022-12-07 13:39:20
举报
文章被收录于专栏:移动端开发移动端开发

前言


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

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

Google


      一、Cocopads导入项目

代码语言:javascript
复制
#Google
pod 'GoogleSignIn'

      二、配置项目

      1、导入GoogleService-Info.plist文件

      我还是建议大家直接导入这个文件的,因为你一旦使用其他谷歌服务,还是需要这个文件的,我们一旦介入谷歌登录,后面肯定还是需要其他服务的,比如Firebase数据统计等等。

       2、配置URL Types

      Google这里我们配置的是前面Plist文件中的REVERSED_CLIENT_ID字段

      三、我们接下来看看具体的代码

      1、导入头文件

代码语言:javascript
复制
/// Google登录
#import <GoogleSignIn/GoogleSignIn.h>

     2、具体的登录代码如下

代码语言:javascript
复制
    /// 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、退出登录方法

代码语言:javascript
复制
/// Google退出登录
func loginOutWithGoogle() {
        
   GIDSignIn.sharedInstance.signOut()
}

Facebook


      1、Facebook关于URL Types的配置前面的截图已经有保存、我们就不在重复说,fb后面的是你的应用ID。

      2、导入头文件   

代码语言:javascript
复制
/// Facebook
import FBSDKLoginKit

      3、具体的实现代码

代码语言:javascript
复制
    /// 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、退出登录

代码语言:javascript
复制
/// Facebook退出登录
func loginOutWithFacebook() {
        
     let loginManager = LoginManager()
     loginManager.logOut()
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档