简洁性 2.0.1

简洁性 2.0.1

测试已测试
Lang语言 SwiftSwift
许可证 Apache 2
发布最后发布2016年9月
SPM支持 SPM

Edward Jiang 维护。



简洁性 2.0.1

简洁性

codebeat badge Slack Status

简洁性是一种简单的在您的 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

简洁性由 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)。

  • Swift 2.3 的支持在分支 swift2.3
  • Swift 2.2 的支持在版本 1.x

将链接处理程序添加到 AppDelegate

当用户完成其登录流程时,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 登录

首先,您需要在与 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 登录

首先,您需要与 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 登录

首先,您需要在 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
}

通用 OAuth 提供者

Simplicity 支持任何实现隐式授权类型的 OAuth 提供者。

let provider = OAuth2(clientId: clientId, authorizationEndpoint: authorizationEndpoint, redirectEndpoint: redirectEndpoint, grantType: .Implicit)

Simplicity.login(provider) { (accessToken, error) in
  // Handle access token here
}

为 OAuth 提供者请求作用域

如果需要自定义作用域,您可以修改 Facebook 或 Google 对象以获取它们。

let facebook = Facebook()
facebook.scopes = ["public_profile", "email", "user_friends"]

Simplicity.login(facebook) { (accessToken, error) in
  // Handle access token here
}

Twitter,LinkedIn 和 GitHub

由于其没有客户端密钥,我们无法实现 Twitter、GitHub、LinkedIn、Slack 或其他登录类型。客户端密钥在移动客户端中基本不安全,因此我们需要创建一个伴随服务器来帮助处理身份验证请求。

如果您对此有兴趣,请 +1 或关注这个 GitHub Issue,创建一个伴随服务器 以表明您对此的需求。

其他外部登录提供者

想要实现另一个外部登录提供者吗?请 在 GitHub 上创建一个 issue,让我知道它的需求,或者考虑为此项目贡献力量!

贡献

请发送包含您实现的新 LoginProvider 的 pull request。LoginProvider 应尽可能尝试自动配置。

许可证

本软件遵循Apache 2.0许可协议。更多信息请参阅LICENSE文件。