2016-12-13 46 views
2

aws-android-sdkを使用してawsユーザープールに接続できます。電子メール、名前などの標準的な属性を取得できますが、カスタム属性を取得することはできません。ここ が使用する関数です:aws-android-sdkを使用してユーザープールでカスタム属性を取得する方法

GetDetailsHandler detailsHandler = new GetDetailsHandler() { 
     @Override 
     public void onSuccess(CognitoUserDetails cognitoUserDetails) { 
      // Extract user details 
     } 

     @Override 
     public void onFailure(Exception exception) { 
     } 
    }; 

答えて

0

あなたはユーザー属性を取得するためにCognitoUserAttributesクラスのgetAttributes()を使用する必要があります。

あなたは(getUserAttributes)を取得するためのメソッドを呼び出すことができ、認証されたユーザー(CognitoUserオブジェクト)にCognitoで、

https://github.com/aws/aws-sdk-android/blob/master/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUserAttributes.java

+1

ありがとうございます。私はまさにあなたが提案したことをやっていた。私がcognitoUserDetailsを取得すると、私はgetAttributes()を呼び出します。問題は、ニックネーム、住所、生年月日などのすべての標準属性を取得できることです。しかし、カスタム属性はgetAttributes()に返されません! – Felini500

+0

あなたの情報については、aws cliを使用してカスタム属性を取得できます。次のコマンドを入力します。aws cognito-idp admin-get-user --user-pool-id xxxxxxxx --username xxxxxxxxしかし、aws-android-sdkでは、cognitoUserDetails getAttributes()を使用してカスタム属性情報を取得することは不可能です。 – Felini500

0

基本的にドキュメント http://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUserAttributes.html

とソースコードを見て、属性の更新(updateAttributes)。カスタムを定義した場合、例えばpreferred_name属性として、あなたはこのようにそれを使用する場合は、以下のように参照する必要があることに注意してください:@Sergeyコワレフに

cognitoUserDetailsを追加

custom:preferred_name 
0

CognitoUserAttributesCognitoUserSettings

cognitoUserDetails.getAttributes(); // returns UserAttributes 
cognitoUserDetails.getSettings(); //returns UserSettings 
を持っています

ハッシュマップされた属性値を取得するには、もう一度getAttributes()を呼び出す必要があります。

custom:preferred_nameを検索するには、次のコードを使用します。

Map mDetails = cognitoUserDetails.getAttributes().getAttributes(); 
String name = mDetails.get("custom:preferred_name").toString(); 

属性名を明確にするために、AWS User Pools Console> Pool Detailsを確認してください。

Required attributes name, phone_number 
Alias attributes preferred_username 
Custom attributes custom:company, custom:location 

Androidでこれを使用しました。

+0

これは、ユーザーがログインしている場合にのみ正しく動作しますか?セッションがない場合、属性を取得する方法はどうですか? – portfoliobuilder

+1

@portfoliobuilderこれは、ログインしたユーザーの詳細ですが、すべてのユーザーデータを取得する方法はわかりません。 1つの方法は、AWS Cognito Groupsを使用することです。 Cognitoを長時間使用しないで確認します。 – skarfa

1

カスタム属性を読み取り可能とマークする必要があります。下記を参照してください。 https://forums.aws.amazon.com/thread.jspa?threadID=248330

+1

どのように達成されるか詳細を記入してください。 – luk2302

+0

この操作は、AWS Web Consoleの[ユーザプール]> [アプリケーションクライアント]で行います。次に、「属性の読み取りと書き込みの許可を設定する」に進みます。 R/Wを切り替える属性のリストが表示されます。私がRにトグルしたら – Bill

関連する問題