geheime oder öffentliche Schlüssel bereitgestellt werden muss - IOS/Swift - + - Sockel.io-JWT

Mein Ziel ist sehr einfach, die Authentifizierung des Benutzers über socket.io-jwt. So, ich könnte manipulieren, seine/Ihre Daten in Echtzeit.

Clientseitiger code

import SocketIOClientSwift
import KeychainAccess

class SocketIOManager: NSObject {
    static let sharedInstance = SocketIOManager()

    //1
    let keychain = Keychain(server: "https://testing.herokuapp.com", protocolType: .HTTPS)

    //2
    var token: String {
        get {
            if let realToken = keychain["token"] {
                return String(realToken)
            } else {
                return ""
            }

        }
    }

    //3
    lazy var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "https://testing.herokuapp.com")!,
                                                     options: [.Log(true), .ConnectParams(["token": self.token])])

    override init() {
        super.init()

    }


    func establishConnection() {
        socket.connect()
    }

    func closeConnection() {
        socket.disconnect()
    }



}

Einfach für Euch zu verstehen,

  1. Schlüsselanhänger Zweck ist nur zum speichern der token, lassen Sie uns sagen, dass ich bereits gespeichert
    das token vom Benutzer, der sich anmeldet, dann werde ich einfach tun
    keychain["token"] = "token", lässt vermuten, dass das token wurde
    gespeichert
  2. var token ist, um die token, weil derzeit Schlüsselbund speichern
    die token optional, damit muss ich tun, optional mit Bindung.
  3. Schließlich instanziiere ich ein socket-Objekt, so dass ich übergeben Sie das token
    als parameter, viele Menschen empfehlen, dies zu tun
    .ConnectParams(["token": self.token])

So weit so gut, aber jetzt, immer wenn ich versuche zum herstellen einer Verbindung mit einer app delegieren ,

AppDelegate.Swift

 func applicationDidBecomeActive(application: UIApplication) {
        //Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
        SocketIOManager.sharedInstance.establishConnection()
    }

Ich erhielt

Handling event: error with data: (
        {
        code = "invalid_token";
        message = "secret or public key must be provided";
        type = UnauthorizedError;
    } )

Zur Klarheit, ich will nicht zählen der serverseitige code, weil Es nur einen Standardcode aus diesem https://github.com/auth0/socketio-jwt

So, die eigentliche Frage ist, was habe ich falsch gemacht??

InformationsquelleAutor airsoftFreak | 2016-05-31

Schreibe einen Kommentar