2017-10-27 1 views
0

instanciate Bisher konnten wir einfach "identitymanager.getUserName" tun, um einen Benutzernamen für einen authentifizierten App-Benutzer zu erhalten. Aber das ist jetzt nicht der Fall mit der aktualisierten Android SDK "mysampleapp".wie CognitoUser zu Benutzerattribut in Android SDK

Ich versuche Attribut Username mit dem folgenden Code, den ich in den aws Tutorials gefunden, aber ich bin immer Fehler abzurufen:

// Implement callback handler for getting details 
GetDetailsHandler getDetailsHandler = new GetDetailsHandler() { 
@Override 
public void onSuccess(CognitoUserDetails cognitoUserDetails) { 
    // The user detail are in cognitoUserDetails 
    Map userAtts = new HashMap(); 
    userAtts = cognitoUserDetails.getAttributes().getAttributes(); 
    String userName = userAtts.get("given_name").toString(); 
} 

@Override 
public void onFailure(Exception exception) { 
    // Getting the error here 
} 
}; 

// Fetch the user details 
cognitoUser.getDetailsInBackground(getDetailsHandler); 

Meine Frage ist, wie kann ich instanziiert „cognitouser“ Variable in der obigen Code?

Ich versuchte Folgendes, aber es hat nicht funktioniert. Gibt mir ein „keine Identität Fehler“:

CognitoUserPool userPool = new CognitoUserPool(this, userPool, keyID, 
    keySecrete); 
    CognitoUser cognitoUser = userPool.getCurrentUser(); 

ich den Fehler:

onFailure==com.amazonaws.mobileconnectors.cognitoidentityprovider.exceptions.CognitoNotAuthorizedException:User-ID is null 

Der Benutzer ist bereits angemeldet als authentifizierter Benutzer, bevor ich versuchen, ihren Benutzernamen abzurufen. Bitte helfen Sie bei jeder Idee. Ich muss nur "cognitoser" instanziieren und mit meiner Arbeit fortfahren.

Antwort

0

Stellen Sie sicher, dass Sie keinen veralteten Konstruktor der CognitoUserPool-Klasse verwenden. Dies funktionierte für mich:

CognitoUserPool userPool = new CognitoUserPool(this, awsConfiguration); 
Verwandte Themen