我无法将授权持有者令牌添加到在 Swift 5 中使用 Moya 创建的 newtwork 层



我使用Moya制作网络层。我已经向Header添加了承载访问,并在日志"中显示我;找不到个人访问客户端。请创建一个";

这是我的代码:

服务API

enum Service {
case addProperty(property_type_id:Int,property_category_id:Int,
user_id:Int,property_name:String,address: String,description:
String,price:Int,city_id:Int,area_id:Int)
}
extension Service:TargetType,AccessTokenAuthorizable {
var baseURL: URL {
return URL(string: Constant.Url.baseUrl)!
}
var path: String {
switch self { 
case .addProperty(_, _, _, _, _, _, _, _, _):
return "/add"
}
}
var method:Moya.Method {
switch self { 
case .addProperty(_, _, _, _, _, _, _, _, _):
return .post
}
}
var sampleData: Data {
switch self {  
case .addProperty(_, _, _, _, _, _, _, _, _):
return "{'phone':'page'}".data(using: .utf8)!
}
}
var task: Task { 
switch self {  
case .addProperty(let property_type_id, let property_category_id, let user_id, let property_name, let address, let description, let price, let city_id, let area_id):

var params = [String:Any]()
params["property_type_id"] = "(property_type_id)"
params["property_category_id"] = "(property_category_id)"
params["user_id"] = "(user_id)"
params["property_name"] = "(property_name)"
params["address"] = "(address)"
params["price"] = "(price)"
params["city_id"] = "(city_id)"
params["area_id"] = "(area_id)"

var formData = [MultipartFormData]()
for (key, value) in params {
if let imgData = value as? Data {
formData.append(MultipartFormData(provider: .data(imgData), name: key, fileName: "testImage.jpg", mimeType: "image/jpeg"))
} else {
formData.append(MultipartFormData(provider: .data("(value)".data(using: .utf8)!), name: key))
}
}
return .uploadMultipart(formData
}
}
var headers: [String : String]? { 
switch self { 
case .addProperty(_, _, _, _, _, _, _, _, _):
return ["Content-Type": "multipart/form-data",
"Authorization": "Bearer+(Constant.accesstoken.token)"]
}
}
var authorizationType: AuthorizationType? {
switch self {
case .addProperty(_, _, _, _, _, _, _, _, _):
return .bearer
}
}
}

这是网络管理员:

protocol Networkable {
var provider: MoyaProvider<Service> { get }

func addProperty(property_type_id:Int,property_category_id:Int,user_id:Int,property_name:String,address: String,description:String,price:Int,city_id:Int,area_id:Int,completion:@escaping (Data?)->Void)
}
class NetworkManager:Networkable {
static let shared = NetworkManager()
private init() {}
var provider = MoyaProvider<Service>()
func addProperty(property_type_id: Int, property_category_id: Int, user_id: Int, property_name: String, address: String, description: String, price: Int, city_id: Int, area_id: Int, completion: @escaping (Data?) -> Void) {
provider.request(.addProperty(property_type_id: property_type_id, property_category_id: property_category_id, user_id: user_id, property_name: property_name, address: address, description: description, price: price, city_id: city_id, area_id: area_id)) { (result) in
self.requestCompletion(result: result) { (data) in
completion(data)
}
}
}

//MARK: For The Completion
func requestCompletion(result:Result<Moya.Response, MoyaError>,completion:@escaping (Data?)->Void){
switch result {

case let .success(response):
do {
completion(response.data)
} catch let err {
print(err.localizedDescription)
completion(nil)
}

case let .failure(error):
print("error is : (error.errorDescription)")
completion(nil)
}
}
}

"我还是会出错";消息":找不到个人访问客户端。请创建一个">

我如何添加授权令牌,或者在头文件中是否需要添加任何内容。backend Php laravel。

我已将OAuthToken存储在UserDefaults中。现在用改变provider

let provider = MoyaProvider<Service>(plugins : [AccessTokenPlugin { _ in UserDefaults.standard.value(forKey: "OAuthToken") as! String }])

希望这能奏效。!

最新更新