swift - 从 swift 应用程序发出发送数据 Heroku

标签 swift authentication heroku postman

我正在尝试使用 mongolab 将创建的用户数据从我的 swift 应用程序发送到 heroku 服务器。我可以从 postman 发送数据,它显示在 mogolab 上,但是当我通过 swift 应用程序发送时,它给我以下错误

2019-07-02 22:43:49.473763-0700 Smack[2903:99473] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/amansingh/Library/Developer/CoreSimulator/Devices/53EA3DDB-EA13-45F9-A9C4-6EB6ABF911A1/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles 2019-07-02 22:43:49.474887-0700 Smack[2903:99473] [MC] Reading from private effective user settings. 2019-07-02 22:44:12.737834-0700 Smack[2903:99604] [AutoFill] Cannot show Automatic Strong Passwords for app bundleID: com.learning.0363.Smack due to error: iCloud Keychain is disabled

import Foundation
import Alamofire
import SwiftyJSON


class AuthService {
    static let instance = AuthService()

    let defaults = UserDefaults.standard
    var isLoggedIn : Bool {
        get {
            return defaults.bool(forKey: LOGGED_IN_KEY)
        }
        set {
            defaults.set(newValue, forKey: LOGGED_IN_KEY)
        }
    }

    var authToken : String {
        get {
            return defaults.value(forKey: TOKEN_KEY) as! String
        }
        set {
            defaults.set(newValue, forKey: TOKEN_KEY)
        }
    }

    var userEmail: String {
        get {
            return defaults.value(forKey: USER_EMAIL) as! String
        }
        set {
            defaults.set(newValue, forKey: USER_EMAIL)
        }
    }

    func registerUser(email: String, password: String, completion: @escaping CompletionHandler){

        let lowerCaseEmail = email.lowercased()

        let body: [String: Any] = [
            "email": lowerCaseEmail,
            "password": password

        ]
        Alamofire.request(URL_REGISTER, method: .post, parameters: body, encoding: JSONEncoding.default, headers: HEADER).responseString { (response) in
            if response.result.error == nil {
                completion(true)
            }else{
                completion(false)
                debugPrint(response.result.error as Any)
            }
        }
    }
    func loginUser(email: String, password: String, completion: @escaping CompletionHandler){
        let lowerCaseEmail = email.lowercased()

        let body: [String: Any] = [
            "email": lowerCaseEmail,
            "password": password

        ]

        Alamofire.request(URL_LOGIN, method: .post, parameters: body, encoding: JSONEncoding.default, headers: HEADER).responseString { (response) in
            if response.result.error == nil {
//                if let json =  response.result.value as? Dictionary<String, Any>{
//                    if let email = json["user"] as? String {
//                        self.userEmail = email
//                    }
//                    if let token = json["token"] as? String {
//                        self.authToken = token
//                    }
//                }
                //USING SWIFTY JSON
                guard let data = response.data else {
                    return
                }
                do {
                    let json = try JSON(data: data)
                    self.userEmail = json["user"].stringValue
                    self.authToken = json["token"].stringValue
                } catch {
                    print(error.localizedDescription)
                }


                self.isLoggedIn = true
                completion(true)
            }else{
                completion(false)
                debugPrint(response.result.error as Any)
            }
        }


    }




}

它显示已登录但是当我检查数据库中的数据时它不存在

最佳答案

不确定“我的数据库中的数据不存在”是什么意思,但是,关于错误,该消息在某种程度上是明确的:

[AutoFill] Cannot show Automatic Strong Passwords for app bundleID: com.learning.0363.Smack due to error: iCloud Keychain is disabled

该应用程序有时会尝试自动填充一些凭据文本字段,但您的 iCloud 钥匙串(keychain)已禁用,从而阻止系统从您的设备检索您的登录名/密码信息。


尝试从这样的设置中启用它:

  • 选择“设置”> [您的姓名]
  • 点按钥匙串(keychain)并滑动将其打开。
  • 输入您的 Apple ID,然后按照说明操作。

enter image description here


提前想一想,如果您的设备上也禁用了自动填充,您可能会遇到类似的错误。

这是一个非常快速的教程,展示了如何设置所有这些:

https://robopress.robotsandpencils.com/strong-passwords-in-ios-12-8ec819b3b99

关于swift - 从 swift 应用程序发出发送数据 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56945162/

相关文章:

mongodb - MongoError : getaddrinfo ENOTFOUND undefined undefined:27017

python - 将 Flask-Login 身份验证从 Web 应用程序传递到 API

ruby-on-rails - 最佳实践 - RoR 4 Heroku - Cron 每小时从外部 API 填充数据库

ios - Release模式下缺少资源

ios - 无法在 swift 2 中使用 AVCaptureVideoDataOutput 通过 CGDataProviderCopyData 获取像素数据

ios - 我如何快速确定一个类符合哪些协议(protocol)?

swift - 在 Swift 中将负数更改为二进制

java - Android 上的 Google 登录 - 由于未登录而无法注销

从多个站点进行 ASP.NET 通用登录

ruby-on-rails - Heroku 应用程序崩溃错误 H10.. 无法解决,请帮助