错误状态码400,尝试使用REST删除RevenueCat客户时,可能的问题是什么?

huangapple go评论72阅读模式
英文:

Error status code 400 when trying to delete a RevenueCat customer with REST, what could be the problem?

问题

以下是您的代码的中文翻译:

我正在尝试从RevenueCat中删除一个客户,如果用户决定删除他们的帐户。这是我实现的代码:

private func deleteRevenueCatAccount(forUserID: String) {
    
    let headers = ["accept": "application/json", "Authorization": "Bearer \(secretApiKey)"]
    let baseURL = "https://api.revenuecat.com/v1"
    let deleteEndpoint = "/subscribers/\(forUserID)"
    let urlString = baseURL + deleteEndpoint
    
    guard let url = URL(string: urlString) else {
        // 处理无效的URL错误
        return
    }
    
    // 创建请求
    let request = NSMutableURLRequest(
        url: url,
        cachePolicy: .useProtocolCachePolicy,
        timeoutInterval: 10.0
    )
    
    request.httpMethod = "DELETE"
    request.allHTTPHeaderFields = headers
    
    // 创建会话
    let session = URLSession.shared
    
    // 发送请求
    let task = session.dataTask(with: request as URLRequest) { (data, response, error) in
        
        if let error = error {
            // 处理错误
            print("错误:\(error.localizedDescription)")
            return
        }
        
        // 检查响应
        if let httpResponse = response as? HTTPURLResponse {
            
            if httpResponse.statusCode == 204 {
                // 客户成功删除
                print("客户成功删除")
            } else {
                // 处理非成功状态码
                print("错误:\(httpResponse.statusCode)")
            }
            
        } //: HTTP响应
        
    } //: 数据任务
    
    task.resume()
    
} //: FUNC

然而,它在HTTPURLResponse中抛出一个带有状态码400的错误。有任何想法可能是问题吗?

注意:

我试图删除的用户是沙盒用户,因为我仍在开发中,但在联系了RevenueCat支持之后,他们告诉我它应该仍然适用于沙盒用户。

英文:

I am trying to delete a customer from RevenueCat if the user decides to delete their account. This is the code I implemented:

private func deleteRevenueCatAccount(forUserID: String) {
    
    let headers = ["accept": "application/json", "Authorization": "Bearer \(secretApiKey)"]
    let baseURL = "https://api.revenuecat.com/v1"
    let deleteEndpoint = "/subscribers/\(forUserID)"
    let urlString = baseURL + deleteEndpoint
    
    guard let url = URL(string: urlString) else {
        // Handle invalid URL error
        return
    }
    
    // Create the request
    let request = NSMutableURLRequest(
        url: url,
        cachePolicy: .useProtocolCachePolicy,
        timeoutInterval: 10.0
    )
    
    request.httpMethod = "DELETE"
    request.allHTTPHeaderFields = headers
    
    // Create the session
    let session = URLSession.shared
    
    // Send the request
    let task = session.dataTask(with: request as URLRequest) { (data, response, error) in
        
        if let error = error {
            // Handle error
            print("Error: \(error.localizedDescription)")
            return
        }
        
        // Check the response
        if let httpResponse = response as? HTTPURLResponse {
            
            if httpResponse.statusCode == 204 {
                // Customer deleted successfully
                print("Customer deleted successfully")
            } else {
                // Handle non-successful status code
                print("Error: \(httpResponse.statusCode)")
            }
            
        } //: HTTP RESPONSE
        
    } //: DATA TASK
    
    task.resume()
    
} //: FUNC

However, it throws an error with a status code 400 in the HTTPURLResponse.

Any ideas what could be the problem?

**Note:

The user that I am trying to delete is a sandbox user since I am still in development, but after contacting the RevenueCat support, they told me that it should still work for sandbox users.

答案1

得分: 1

我在RevenueCat工作,

如果我不看请求的响应正文,只是猜测的话,可能是您没有在请求标头中明确指定Content-Type: application/json,请尝试添加它:

 let headers = ["accept": "application/json", "Content-Type": "application/json", "Authorization": "Bearer \(secretApiKey)"]

然而,您不应该在应用程序内部使用秘密API密钥,这些密钥应该安全地用于您的服务器,否则恶意行为者可能会对您的帐户执行破坏性操作!

英文:

I work at RevenueCat,

If I had to guess, without looking at the response body of the request, it might be that you didn't explicitly state Content-Type: application/json in the request headers, try adding it:

 let headers = ["accept": "application/json", "Content-Type": "application/json", "Authorization": "Bearer \(secretApiKey)"]

However you shouldn't use a Secret API key inside your App, these are meant to be securely used in your server, otherwise bad actors could perform destructive actions on your account!

huangapple
  • 本文由 发表于 2023年5月25日 12:51:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/76329030.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定