简洁性是一种简单的在您的 iOS 应用程序中实现 Facebook 和 Google 登录的方式。
简洁性可以轻松扩展以支持其他外部登录提供者,包括 OAuth2、OpenID、SAML 以及其他自定义协议,未来还将支持更多。我们始终欢迎 pull requests!
Facebook 和 Google 的 SDK 相对较重,设置和使用需要时间。您可以使用简洁性,只需管理一个 SDK,即可在应用程序中以外部提供者进行登录。与使用 Facebook & Google SDK 相比,简洁性仅将 200KB 添加到您的应用程序的二进制文件中。
简洁性也可扩展,并且已经支持其他登录提供者,例如 VKontakte(最大的欧洲社交网络)和通用的 OAuth 提供者。
使用简洁性登录就像
Simplicity.login(Facebook()) { (accessToken, error) in
// Handle access token here
}
简洁性由 Stormpath 维护,这是一个用于身份验证、授权和用户管理的 API 服务。如果您正在为应用程序构建后端 API,请考虑使用 Stormpath 来帮助您实现安全的 REST API。阅读我们关于如何使用 Node.js 为移动应用程序构建 REST API的教程。
需要 XCode 8+ / Swift 3+
要安装简洁性,我们使用 CocoaPods。要安装它,只需将以下行添加到 Podfile 中
pod 'Simplicity'
Carthage
Swift 2
简洁性的旧版本支持 Swift 2.3(Xcode 8)或 Swift 2.2(Xcode 7)。
当用户完成其登录流程时,Facebook 或 Google 会将用户重定向回应用程序。简洁性将监听访问令牌或错误。您需要在 AppDelegate.swift
中添加以下代码行
import Simplicity
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any]) -> Bool {
return Simplicity.application(app, open: url, options: options)
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return Simplicity.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}
Simplicity 非常灵活,支持大量针对您的登录提供者的配置选项。欲了解详细信息,请参阅 CocoaDocs 上的完整 API 文档:Simplicity API 访问 CocoaDocs。
首先,您需要在与 Facebook 连接的 创建应用程序。注册您的应用程序后,进入您应用程序仪表板的设置页面。点击“添加平台”,填写您的 Bundle ID,并开启“单一登录”。
最后,打开您的 App 的 Xcode 项目并转到项目的信息标签。在“URL Types”下添加一个新的条目,并在 URL 模式字段中输入 fb[APP_ID_HERE]
(将 [APP_ID_HERE]
替换为您的 Facebook App ID)。
然后,您可以通过调用以下方式来启动登录界面:
Simplicity.login(Facebook()) { (accessToken, error) in
// Handle access token here
}
应要求,您还可以在任意的 LoginProvider
对象上调用 .login
。
Facebook().login { (accessToken, error) in
// Handle access token here
}
首先,您需要与 Google 进行 注册应用程序。点击“启用和管理 API”,然后转到 凭据标签。为“iOS”创建 OAuth 客户端 ID。
接下来,打开您的 App 的 Xcode 项目并转到项目的信息标签。在“URL Types”下添加一个新的条目,并在 URL 模式字段中输入 Google iOS 客户端的 URL 模式
(从 Google 开发者控制台获取)。
然后,您可以通过调用以下方式来启动登录界面:
Simplicity.login(Google()) { (accessToken, error) in
// Handle access token here
}
首先,您需要在 VKontakte 上创建一个应用程序。注册您的应用程序后,进入客户端设置页面。将 iOS 的 App Bundle ID 设置为 Xcode -> Target -> Bundle Identifier 下的您的 App Bundle(例如 com.developer.applicationName)。
最后,打开您的 App 的 Xcode 项目并转到项目的信息标签。在“URL Types”下添加一个新的条目,并在 URL 模式字段中输入 vk[CLIENT_ID_HERE]
。然后,您可以通过调用以下方式来启动登录界面:
Simplicity.login(VKontakte()) { (accessToken, error) in
// Handle access token here
}
Simplicity 支持任何实现隐式授权类型的 OAuth 提供者。
let provider = OAuth2(clientId: clientId, authorizationEndpoint: authorizationEndpoint, redirectEndpoint: redirectEndpoint, grantType: .Implicit)
Simplicity.login(provider) { (accessToken, error) in
// Handle access token here
}
如果需要自定义作用域,您可以修改 Facebook 或 Google 对象以获取它们。
let facebook = Facebook()
facebook.scopes = ["public_profile", "email", "user_friends"]
Simplicity.login(facebook) { (accessToken, error) in
// Handle access token here
}
由于其没有客户端密钥,我们无法实现 Twitter、GitHub、LinkedIn、Slack 或其他登录类型。客户端密钥在移动客户端中基本不安全,因此我们需要创建一个伴随服务器来帮助处理身份验证请求。
如果您对此有兴趣,请 +1 或关注这个 GitHub Issue,创建一个伴随服务器 以表明您对此的需求。
想要实现另一个外部登录提供者吗?请 在 GitHub 上创建一个 issue,让我知道它的需求,或者考虑为此项目贡献力量!
请发送包含您实现的新 LoginProvider 的 pull request。LoginProvider 应尽可能尝试自动配置。
本软件遵循Apache 2.0许可协议。更多信息请参阅LICENSE文件。