SuperbGitHub 0.1.0

SuperbGitHub 0.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2017年2月
SwiftSwift版本3.0
SPM支持SPM

维护者 Adam Sharp



Superb提供GitHub身份验证提供者。

用法

SuperbGitHub实现了两种不同的身份验证流程。选择最适合您应用程序需求的流程。

使用Safari View Controller的Web应用流程

GitHubOAuthProvider 使用 GitHub OAuth Web应用流程Safari View Controller 实现。

  1. 注册提供者

    // 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中。

  2. 处理重定向

    // 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)
      }
    }
  3. 使用 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
      // ...
    }

使用基本认证的非Web应用流程

GitHubBasicAuthProvider 使用简单的 UIAlertController 来提示用户输入其凭据,实现了GitHub OAuth 非Web应用流程。然后使用凭据 创建个人访问令牌,并丢弃用户的凭据。

  1. 注册提供者

    // GitHub+Providers.swift
    
    import Superb
    import SuperbGitHub
    
    extension GitHubBasicAuthProvider {
      static var shared: GitHubBasicAuthProvider {
        return Superb.register(
          GitHubBasicAuthProvider()
        )
      }
    }
  2. 使用 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文件中指定的条款下重新分发。

关于

thoughtbot

SuperbGitHub由thoughtbot, inc. 维护和资助。thoughtbot的名字和徽标是thoughtbot, inc.的商标。

我们热爱开源软件!查看我们的其他项目雇用我们以帮助您构建产品。