前言


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

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

Google


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

Facebook


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 Facebook和Google登录的更多相关文章

  1. 关于Facebook和Google+授权登录

    实际中遇到需要Facebook和Google+等第三方授权登录自己的Web应用(可能还有Android和IOS的手机应用),本质上都是JS SDK的官方应用.这时候不得不去他们官方查看文档. 注:一下 ...

  2. ASP.NET Web API 2 external logins with Facebook and Google in AngularJS app

    转载:http://bitoftech.net/2014/08/11/asp-net-web-api-2-external-logins-social-logins-facebook-google-a ...

  3. iOS Facebook SDK

    iOS 使用 Facebook SDK 可以登录,分享,发布通知(Notifications)等. 首先下载 Facebook SDK.然后在 Facebook Developer 上注册自己的 ap ...

  4. ShareSDK 集成 Google+ 登录 400. Error:redirect_uri_mismatch 和 Error Domain=ShareSDKErrorDomain Code=204

    最近在集成ShareSDK中 Google+ 登录授权时候 出现了如下几个问题 1.    400.  Error:redirect_uri_mismatch 出现这种情况, redirectUri应 ...

  5. Facebook 和 Google 如何激发工程师的创造力

    原文链接:http://kb.cnblogs.com/page/193450/ 今天终于“朝圣”了两个伟大的公司——Facebook和Google,对创造力和驱动力的来源有了更多的理解,尤其是对于典型 ...

  6. google+ 登录API 使用 javascript sdk 快速入门 (图解)

    准备工作: 打开Google API 控制台 : https://code.google.com/apis/console 点击 My Project (我的项目) 按照图示流程,您将完成一个goog ...

  7. Facebook和Google如何激发工程师的创造力

    http://taiwen.lofter.com/post/664ff_ad8a15 今天终于“朝圣”了两个伟大的公司——Facebook和Google,对创造力和驱动力的来源有了更多的理解,尤其是对 ...

  8. android应用集成google登录

        集成google登录之前需要有一下三点要求,只有具备一下两点要求才能集成google登录:         1,android 运行版本4.0及更新版本         2,android 设 ...

  9. iOS微信实现第三方登录的方法

    这篇文章主要介绍了iOS微信第三方登录实现的全过程,一步一步告诉大家iOS微信实现第三方登录的方法,感兴趣的小伙伴们可以参考一下   一.接入微信第三方登录准备工作.移动应用微信登录是基于OAuth2 ...

  10. 微信分享缩略图,如何增加微信朋友圈分享链接的小图片? facebook、google+、twitter等分享的标签

    微信分享缩略图 如何增加微信朋友圈分享链接的小图片?在网页的头部<head>标签内加上以下代码,图片路径自行修改.<head><div id='wx_pic' style ...

随机推荐

  1. mysql数据库指定ip远程访问(设置远程连接),赋权操作

    mysql数据库指定ip远程访问(设置远程连接) 远程访问mysql报错,ip不允许链接的情况:错误号码1045Access denied for user '用户名' @'数据库地址' (using ...

  2. 搭建 VuePress 站点必做的 10 个优化

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 在搭建这 ...

  3. ORACLE 分页和行限制

    行限制:示例 (此语法从12C版本开始支持) 以下语句返回具有最低employee_id值的 5 名员工: SELECT employee_id, last_name FROM Employees O ...

  4. 亮相2024 DPU&AI Networking创新大会,天翼云斩获两项大奖!

    近日,以"智驱网络 芯动未来"为主题的2024 DPU&AI Networking创新大会在北京举办.大会表彰了在DPU与AI网络技术创新及实践应用中取得卓越成就的单位与项 ...

  5. API网关-APISIX简介

    本文分享自天翼云开发者社区<API网关-APISIX简介>,作者:w****n Apache APISIX 是一个动态.实时.高性能的云原生 API 网关,提供了负载均衡.动态上游.灰度发 ...

  6. spring boot配置mybatis-plus

    一.maven配置 <mybatis-plus.version>3.2.0</mybatis-plus.version> <mysql-connector.version ...

  7. 用python做时间序列预测三:时间序列分解

    在初始概念篇中,我们简单提到了时间序列由趋势.周期性.季节性.误差构成,本文将介绍如何将时间序列的这些成分分解出来.分解的使用场景有很多,比如当我们需要计算该时间序列是否具有季节性,或者我们要去除该时 ...

  8. WinForm 多线程+委托来防止界面假死

    参考: http://www.cnblogs.com/xpvincent/archive/2013/08/19/3268001.html 当有大量数据需要计算.显示在界面或者调用sleep函数时,容易 ...

  9. vue element UI el-table表格添加行点击事件

    <el-table @row-click="openDetails"></el-table> //对应的 methods 中//点击行事件methods: ...

  10. Typecho弹出find Input author error怎么解决

    大多数报错的起因就是因为,有些模板归档页面的评论功能被阉割掉了 于是导致一些评论验证功能的插件爆这个错误. #解决方法有以下三种 1,编辑这些没有评论功能的页面,高级设置,关闭评论,然后发布文章. 2 ...