Я получаю ту же ошибку:
{"status_code": 6, "status_message": "Недопустимый идентификатор: недопустимый идентификатор предварительный реквизит или не найден."}
Смысл кода в том, чтобы получить идентификатор токена и затем использовать этот идентификатор токена для создания идентификатора сеанса, но всякий раз, когда я делаю вызов, он возвращает эту ошибку.
struct Post: Encodable {
let requestToken: String
enum CodingKeys: String, CodingKey {
case requestToken = "request_token"
}
}
struct Response: Codable {
let success: Bool
let sessionId: String
enum CodingKeys: String, CodingKey {
case success
case sessionId = "session_id"
}
}
struct ResponseToken: Codable {
var success: Bool
var expires: String
var requestToken: String
enum CodingKeys: String, CodingKey {
case success
case expires = "expires_at"
case requestToken = "request_token"
}
}
struct ErrorHandler: Codable {
var status: String
var statusCode: Int
enum CodingKeys: String, CodingKey {
case status = "status_message"
case statusCode = "status_code"
}
}
let apiKey = ""
let Testurl = URL(string: "https://api.themoviedb.org/3/authentication/session/new?api_key=\(apiKey)")!
let getToken = URL(string: "https://api.themoviedb.org/3/authentication/token/new?api_key=\(apiKey)")!
var sessionID = ""
var tokenID = ""
func taskPOSTRequest<RequestType: Encodable, ResponseType: Decodable>(url: URL, body: RequestType, response: ResponseType.Type, completionHandler: @escaping (ResponseType?, Error?) -> Void) {
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try! JSONEncoder().encode(body)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data else {
completionHandler(nil,error)
return
}
print(String(data: data, encoding: .utf8)!)
let decoder = JSONDecoder()
do {
let responseObject = try decoder.decode(ResponseType.self, from: data)
completionHandler(responseObject, nil)
} catch {
completionHandler(nil, error)
}
}
task.resume()
}
func taskGETRequest<ResponseType: Decodable>(url: URL, response: ResponseType.Type, completionHandler: @escaping (ResponseType?, Error?) -> Void ){
let task = URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data else {
completionHandler(nil, error)
return
}
let decoder = JSONDecoder()
do {
let responseObject = try decoder.decode(ResponseType.self, from: data)
completionHandler(responseObject, nil)
} catch {
completionHandler(nil, error)
}
}
task.resume()
}
taskGETRequest(url: getToken, response: ResponseToken.self) { (response, error) in
if let response = response {
tokenID = response.requestToken
print(tokenID)
} else {
print(error!)
}
}
taskPOSTRequest(url: Testurl, body: Post(requestToken: tokenID), response: Response.self) { (response, error) in
if let response = response{
sessionID = response.sessionId
print(sessionID)
} else {
print(error!)
}
}
Я продолжаю получать ту же ошибку:
{"status_code": 6, "status_message": "Недопустимый идентификатор: недопустимый идентификатор обязательного или не найден."}