关于OAuth 开放授权常用在获取身份认证和授权令牌token 获取等场景,关于OAuth更权威具体的知识介绍可参考网络资源了解。本文主要介绍了在Swift中使用AFNetworking 网络请求组件,进行OAuth请求。具体参考代码如下:
/// OAuth 网络请求
/// https://www.cnblogs.com/cui-cui/p/7107982.html
/// - Parameter strUrl: 请求s地址
/// - Parameter uname: 用户名
/// - Parameter pwd: 密码
/// - Parameter successBack: 成功回调
/// - Parameter failureBack: 失败回调
/// - Parameter isLoading: 是否显示加载动画
func oAuthRequestFor(Url strUrl:String,
andUsername uname:String,
andPassword pwd:String,
andSuccessBack successBack:@escaping(_ responseData:Any?)->(),
andFailureBack failureBack:@escaping(_ responseString:String?)->(),
withisLoading isLoading:Bool = true){
print("请求地址:\(strUrl),参数:\(uname),\(pwd)")
if !AppDelegate.app().isNetWork() {
return
}
let _view:UIView? = UIApplication.shared.keyWindow?.rootViewController?.view
if isLoading == true {
DispatchQueue.main.async {
if _view != nil {
MBProgressHUD.showMessage("", to: _view)
}
else {
MBProgressHUD.showMessage("")
}
}
}
let sessionManager = AFHTTPSessionManager.init()
sessionManager.requestSerializer.setAuthorizationHeaderFieldWithUsername(uname, password: pwd)
sessionManager.post(strUrl,
parameters: ["grant_type":"client_credentials"],
progress: nil,
success: { (sessionDataTask:URLSessionDataTask?, responseData:Any?) in
DispatchQueue.main.async {
if _view != nil {
MBProgressHUD.hide(for: _view)
}
else {
MBProgressHUD.hide()
}
}
if let jsonObj:[String:Any] = responseData as? [String:Any] {
//请求成功
if K_API_IS_OK(rs: jsonObj[K_API_RESULT_CODE]) {
successBack(jsonObj[K_API_RESULT_DATA])
}
else{
successBack(jsonObj)
}
}
else{
failureBack("请求数据不存在")
}
}) { (sessionDataTask:URLSessionDataTask?, error:Error) in
print(error.localizedDescription)
failureBack(error.localizedDescription)
DispatchQueue.main.async {
if _view != nil {
MBProgressHUD.hide(for: _view)
}
else {
MBProgressHUD.hide()
}
}
}?.resume()
}
示例中的userid,userpassword 是来自公司OAuth服务中申请账号而来。
以上信息就是这些,祝大家工作顺利,身体健康