AppauthWrapper
AppauthWrapper
是一个 AppAuth
扩展框架,用于减少 appauth 代码,直接提供登录和登出简短方法,无需管理 AppAuth
框架直接管理的认证代码。一些 AppauthWrapper
的特性:
- 您可以直接访问登录和登出方法。
- 您可以通过 AppAuth 状态访问刷新令牌。
- 您可以通过 API 调用获取刷新令牌,并通过应用程序认证状态访问 API。
- 此包装器将管理您的 AppAuth 状态,保存和删除您的令牌。
示例
要运行示例项目,请首先从 GitHub 上克隆仓库,然后在示例目录中运行 pod install
。
要求
iOS 9.0 或更高版本
Swift 4.2
安装
AppauthWrapper 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行即可。
pod 'AppauthWrapper','~> 0.1.0'
使用方法
导入框架 AppauthWrapper,并在 AppDelegate 中编写此代码
import AppauthWrapper
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
}
...
创建一个常量文件,并写入这些变量
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
中进行初始化,或者如果您想进行更多优化,您可以在登录之前编写
(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
print(statusCode ?? 0,error)
})
登出
appDelegate.app?.signOut({ (bool) in
if bool {
}
}, { (statusCode,error) in
print(statusCode ?? 0,error)
})
对于刷新令牌和 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.
作者
Somendra Yadav, [email protected]
许可
AppauthWrapper 在 MIT 许可下可用。更多信息请参阅 LICENSE 文件。