测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布上次发布 | 2017年2月 |
SwiftSwift版本 | 3.0 |
SPM支持SPM | ✗ |
维护者 Adam Sharp。
为Superb提供GitHub身份验证提供者。
SuperbGitHub实现了两种不同的身份验证流程。选择最适合您应用程序需求的流程。
GitHubOAuthProvider
使用 GitHub OAuth Web应用流程 和 Safari View Controller 实现。
注册提供者
// GitHub+Providers.swift
import Superb
import SuperbGitHub
extension GitHubOAuthProvider {
static var shared: GitHubOAuthProvider {
return Superb.register(
GitHubOAuthProvider(
clientId: "<your client id>",
clientSecret: "<your client secret>",
redirectURI: URL(string: "<your chosen redirect URI>")!
)
)
}
}
不要忘记将您的app URL方案添加到您的Info.plist中。
处理重定向
// AppDelegate.swift
@UIApplicationMain
final class AppDelegate: UIResponder, UIApplicationDelegate {
// ...
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any]) -> Bool {
return Superb.handleAuthenticationRedirect(url, options: options)
}
}
使用 RequestAuthorizer
执行授权API请求
// GitHubAPIClient.swift
struct GitHubAPIClient {
static let oauthClient = GitHubAPIClient(
requestAuthorizer: RequestAuthorizer(
authorizationProvider: GitHubOAuthProvider.shared
)
)
// ...
func getProfile(completionHandler: @escaping (Result<Profile, SuperbError>) -> Void) {
let request = URLRequest(url: URL(string: "https://api.github.com/user")!)
authorizer.performAuthorized(request) { result in
switch result {
case let .success(data, _):
let profile = parseProfile(from: data)
completionHandler(.success(profile))
case let .failure(error):
completionHandler(.failure(error))
}
}
}
}
// later
let api = GitHubAPIClient.oauthClient
api.getProfile { result in
// ...
}
GitHubBasicAuthProvider
使用简单的 UIAlertController
来提示用户输入其凭据,实现了GitHub OAuth 非Web应用流程。然后使用凭据 创建个人访问令牌,并丢弃用户的凭据。
注册提供者
// GitHub+Providers.swift
import Superb
import SuperbGitHub
extension GitHubBasicAuthProvider {
static var shared: GitHubBasicAuthProvider {
return Superb.register(
GitHubBasicAuthProvider()
)
}
}
使用 RequestAuthorizer
执行授权API请求
// GitHubAPIClient.swift
extension GitHubAPIClient {
static let basicAuthClient = GitHubAPIClient(
requestAuthorizer: RequestAuthorizer(
authorizationProvider: GitHubBasicAuthProvider.shared
)
)
}
// later
let api = GitHubAPIClient.basicAuthClient
api.getProfile { result in
// ...
}
参见CONTRIBUTING文档。感谢贡献者!
SuperbGitHub版权所有(c)2017 thoughtbot, inc。它是免费的软件,可以在LICENSE文件中指定的条款下重新分发。
SuperbGitHub由thoughtbot, inc. 维护和资助。thoughtbot的名字和徽标是thoughtbot, inc.的商标。