2016-07-14 1 views
0

AWSログインの例を使用していますが、問題があります。Cognitoのログインマップの処理

https://github.com/awslabs/aws-sdk-android-samples/tree/master/CognitoSyncDemo

私がログインすると、私はsetLoginsメソッドを使用して(開発Authenticatiion)ログイン資格情報を保存します。

/** *承認されたIDを使用できるようにログインを設定します。これには *ネットワークリクエストが必要です。バックグラウンドスレッドで呼び出す必要があります。 * * @param providerNameで外部IDプロバイダー の名前* @paramトークンのOpenIDトークン */ 公共の静的な無効addLogins(文字列providerNameで、文字列トークン){ (syncClient == null)の場合は{ スロー新しいIllegalStateExceptionを( "CognitoSyncClientManagerはまだ初期化されていません"); }

Map<String, String> logins = credentialsProvider.getLogins(); 
    if (logins == null) { 
     logins = new HashMap<String, String>(); 
    } 
    logins.put(providerName, token); 
    credentialsProvider.setLogins(logins); 
} 

しかし、この情報は、例えば内に保持されません。したがって、私がアプリケーションアプリケーションを閉じて開くと、credentialsProvider.getLogins()は空になります。

AWSの例では、ログインマップが永続化されていません。それに何か問題がありますか?非認証アクセス

答えて

1

現在、上記のサンプルからのトークンを管理し、リフレッシュの一部をカバーしていません:ログイン・マップ上の任意の情報がなければ、私は

com.amazonaws.services.cognitoidentity.model.NotAuthorizedExceptionエラーが発生しました外部IdP(例:Facebook、google、twitterなど)ではなく、IdPから最初のトークンを取得し、有効なトークンがログイン・マップに入力されるとCognitoを使用する方法の例を示しています。ログイン・マップ内の値は、通常、外部IdPによって更新される短い存続トークンであり、期限が切れていれば更新する必要があります。通常、IdPはキャッシュされ、短命のトークンを取得するために使用することができる長命のリフレッシュトークンを提供するが、このロジックはIdPのタイプに固有のものである。