Je suis avec la documentation AWS Amplify et l'exemple de code donné pour vérifier la session d'authentification actuelle est

 func fetchCurrentAuthSession() {
    _ = Amplify.Auth.fetchAuthSession { (result) in
        switch result {
        case .success(let session):
            print("Is user signed in - \(session.isSignedIn)")
        case .failure(let error):
            print("Fetch session failed with error \(error)")
        }
    }
}

Après avoir appelé cette fonction dans un viewDidLoad, j'obtiens cette erreur Thread 1: Erreur fatale: la catégorie d'authentification n'est pas configurée. Appelez Amplify.configure () avant d'utiliser des méthodes sur la catégorie. J'ai donc changé le code en ceci

      func fetchCurrentAuthSession() {
            do {
                try Amplify.configure()
            _ = Amplify.Auth.fetchAuthSession { (result) in
                switch result {
                case .success(let session):
                    print("Is user signed in - \(session.isSignedIn)")
                case .failure(let error):
                    print("Fetch session failed with error \(error)")
                }
            }
        }catch{

        }

    }

Il s'exécute sans erreur mais l'authSession n'est pas imprimé. Quelle est la bonne façon de résoudre ce problème? voici le lien vers leurs documents https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios#check-the-current-auth-session

Voici mon awsconfiguration.json

{
    "UserAgent": "aws-amplify/cli",
    "Version": "0.1.0",
    "IdentityManager": {
        "Default": {}
    },
    "CredentialsProvider": {
        "CognitoIdentity": {
            "Default": {
                "PoolId": "removed",
                "Region": "removed"
            }
        }
    },
    "CognitoUserPool": {
        "Default": {
            "PoolId": "removed",
            "AppClientId": "removed",
            "AppClientSecret": "removed",
            "Region": "removed"
        }
    },
    "FacebookSignIn": {
        "AppId": "removed",
        "Permissions": "public_profile"
    },
    "Auth": {
        "Default": {
            "authenticationFlowType": "USER_SRP_AUTH"
        }
    }
}

Voici mon amplifyconfiguration.json

{
    "UserAgent": "aws-amplify-cli/2.0",
    "Version": "1.0"
}
1
GBMR 2 juin 2020 à 00:36

3 réponses

Meilleure réponse

Il s'agit d'une erreur courante associée aux anciennes versions de la CLI Amplify.

Mettez-le à jour dans le terminal en utilisant npm install -g @aws-amplify/cli.

Une fois que cela est fait, supprimez Amplify Auth du répertoire du projet par amplify remove auth.

3.Entrez amplify push pour configurer les modifications dans votre backend.

4.Maintenant, vous pouvez ajouter avec succès l'authentification à votre projet amplify add auth

5.Entrez amplify push pour configurer les modifications dans votre backend.

6.Lancez maintenant votre projet et voyez ce qui se passe;)

1
AKH 4 juin 2020 à 22:46

Votre fetchCurrentAuthSession modifié atteint votre bloc catch mais vous ne faites rien pour afficher l'erreur. Si vous ajoutez quelque chose comme print ("Inside catch: (error)") à l'intérieur du catch, vous devriez voir l'erreur qui sera probablement que vous appelez à nouveau Amplify.configure (). Que contiennent vos fichiers awsconfiguration.json et amplifyconfiguration.json (masquez votre poolId, appClientID et votre région avant de publier)?

1
Brian McGuiness 4 juin 2020 à 12:36

Vous devez importer les packages Amplify et AmplifyPlugin dans AppDelegate.swift dans votre dossier racine.

import UIKit
import Amplify
import AmplifyPlugins

Ajoutez ensuite la fonction suivante

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
     do {
            try Amplify.add(plugin: AWSCognitoAuthPlugin())
            try Amplify.configure()
            print("Amplify configured with auth plugin")
        } catch {
            print("An error occurred setting up Amplify: \(error)")
        }
    return true
}

Et le plus important,

vous devez vérifier si l'adresse e-mail de l'utilisateur est confirmée? .

Si l'e-mail n'est pas confirmé, isSignedIn sera toujours faux. Vous pouvez vérifier cela pour le emailId particulier dans le userPool

1
Vivek 4 juin 2020 à 09:42