RMPSecureAuth
RMPSecureAuth
是一个用于减少 AppAuth 代码的扩展框架,可以直接提供 登录和登出的简短方法,无需管理由 AppAuth
框架直接管理的认证代码。以下是 RMPSecureAuth
的一些功能:
- 可以直接访问 登录和登出的方法。
- 可以通过 AppAuth 状态访问刷新令牌。
- 可以通过 API 调用获取刷新令牌,并且可以通过应用认证状态访问 API。
- 此 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://www.raywenderlich.com/243-oauth-2-0-with-swift-tutorial.
作者
Somu Yadav, [email protected]
许可协议
RMPSecureAuth遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。