Die Authentifizierung mit OAuth2 auf iOS

Ich bin derzeit versuchen zu autorisieren mein Benutzer mit OAuth2. Ich bin derzeit mit den folgenden Bibliotheken: https://github.com/p2/OAuth2

let oauth2 = OAuth2CodeGrant(settings: [
        "client_id": "my-id",
        "authorize_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://www.googleapis.com/oauth2/v3/token",
        "scope": "profile",     //depends on the API you use
        "redirect_uris": ["com.TestAuthorizeApp:/oauth2Callback"],
        ])

    //let oauth2 = OAuth2CodeGrant(settings: settings)
    oauth2.onAuthorize = { parameters in
        print("Did authorize with parameters: \(parameters)")
    }
    oauth2.onFailure = { error in        //`error` is nil on cancel
        if let error = error {
            print("Authorization went wrong: \(error)")
        }
    }

    oauth2.authConfig.authorizeEmbedded = false
    oauth2.authorize()

Wenn ich diesen starte, lädt es bis google in die browser und ich bin in der Lage, um sich anzumelden. Es fragt mich dann über die Berechtigungen, die ich erklärt haben, in der Umfang und das funktioniert auch. Ich klicken Sie auf ok, öffnen Sie und leitet es mich zurück zu meiner app.

Jedoch wenn ich diesen code ausführen wieder ich erwarte, dass das access-token gespeichert wurde in der Schlüssel-Kette. Allerdings scheint dies nicht zu funktionieren.

Habe ich schaute in den Quellcode und fand das folgende überprüfen: tryToObtainAccessTokenIfNeeded welche immer false zurückgibt. Dies bedeutet, bekomme ich die Seite wo ich immer wieder müssen Sie auf 'Erlauben'.

Ich Frage mich, wenn mir jemand helfen könnte herauszufinden, warum es nicht speichern alles, was in der keychain. Auch bedeutet dies, dass der Benutzer nicht wirklich authentifiziert werden?

Dank.

===

Bearbeiten

Hinzugefügt haben oauth2.verbose = true als pro Pascal ' s Kommentar. Ich bekomme die folgende Ausgabe.

 OAuth2: Looking for items in keychain
 OAuth2: No access token, maybe I can refresh
 OAuth2: I don't have a refresh token, not trying to refresh

Das ist, was ich dachte, was passiert war. Jedoch bin ich immer noch nicht, warum es nicht speichern /finden alles, was in der keychain.

=====

Edit 2

Es stellt sich heraus, dass ich nicht wirklich ein access-token zurück an alle. Bitte sehen Sie sich dieses Gespräch: https://github.com/p2/OAuth2/issues/109 und unten meine Antwort.

  • Set oauth2.verbose = true auf Ihre OAuth2-Instanz und den log posten, es sollte Ihnen sagen, was es tut, mit dem Schlüsselbund.
InformationsquelleAutor pls | 2016-05-12
Schreibe einen Kommentar