RMPSecureAuth 0.1.6

RMPSecureAuth 0.1.6

Somu_Yadav 维护。



  • Somu Yadav

RMPSecureAuth

CI Status Version License Platform

RMPSecureAuth 是一个用于减少 AppAuth 代码的扩展框架,可以直接提供 登录和登出的简短方法,无需管理由 AppAuth 框架直接管理的认证代码。以下是 RMPSecureAuth 的一些功能:

  1. 可以直接访问 登录和登出的方法。
  2. 可以通过 AppAuth 状态访问刷新令牌。
  3. 可以通过 API 调用获取刷新令牌,并且可以通过应用认证状态访问 API。
  4. 此 RMPSecureAuth 将管理您的 AppAuth 状态,保存和移除您的令牌。

示例

要运行示例项目,请先克隆存储库,然后从 Example 目录运行 pod install

要求

iOS 9.0 或更高版本 Swift 4.2

安装

RMPSecureAuth 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中。

pod 'RMPSecureAuth', '~> 0.1.5'

用法

导入RMPSecureAuth框架并在AppDelegate中编写此代码

import RMPSecureAuth
import AppAuth

 
  var currentAuthorizationFlow: OIDExternalUserAgentSession?
  var objAppAuth: AppAuth?

   func application(_ app: UIApplication,
                     open url: URL,
                     options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        
        if let authorizationFlow = self.currentAuthorizationFlow,
            authorizationFlow.resumeExternalUserAgentFlow(with: url) {
            self.currentAuthorizationFlow = nil
            return true
        }
        // Your additional URL handling (if any)
        
        return false
    }
...

创建一个常量文件并写入这个变量(s)

let clientID                   = ""
let clientSecret               = ""
let redirectURI                = ""
let authorization_scope        = ""
let registration_endpoint_uri  = ""
let user_info_endpoint_uri     = ""

let issuer                     = ""
let authorizationEndpoint      = ""
let tokenEndpoint              = ""
let endSessionPointsURL        = ""

在调用登录方法之前,您必须初始化AppAuth类,您可以在AppDelegate中初始化或在Sign-In之前进行更多优化。

(UIApplication.shared.delegate as! AppDelegate).objAppAuth = AppAuth(
            clientID,
            clientSecret,
            redirectURI,
            authorization_scope,
            registration_endpoint_uri,
            user_info_endpoint_uri,
            issuer,
            authorizationEndpoint,
            tokenEndpoint,
            endSessionPointsURL
 )

您可以使用这样的方式使用登录和登出

登录

 appDelegate.app?.signIn(self, { (bool) in
   if bool {

   }
 }, { (session) in
  appDelegate.currentAuthorizationFlow = session
 }, { (statusCode,error) in
            
 })

登出

appDelegate.app?.signOut({ (bool) in
  if bool {
    
  }
}, { (statusCode,error) in
    
})

对于刷新令牌和accessToken,您可以使用如下方式

AppAuth.authState?.lastTokenResponse?.refreshToken
AppAuth.authState?.lastTokenResponse?.accessToken

参考

https://github.com/openid/AppAuth-iOS.

https://developer.forgerock.com/docs/platform/how-tos/implementing-oauth-20-authorization-code-grant-protected-pkce-appauth-sdk-ios.

https://www.raywenderlich.com/243-oauth-2-0-with-swift-tutorial.

作者

Somu Yadav, [email protected]

许可协议

RMPSecureAuth遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。