翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
認証されていないユーザーを認証されたユーザーに切り替える
Amazon Cognito ID プールは、認証されたユーザーと認証されていないユーザーの両方をサポートします。認証されていないユーザーは、ID プロバイダー () でログインしていない場合でも、 AWS リソースにアクセスできますIdPs。このレベルのアクセスは、ユーザーがログインする前にユーザーにコンテンツを表示する場合に便利です。認証されていない各ユーザーは、個別にログインして認証していない場合でも、ID プールに一意の ID があります。
このセクションでは、ユーザーがログインに使用する ID を、認証されていない ID から認証された ID に切り替える方法について説明します。
Android
ユーザーは、認証されていないゲストとしてアプリケーションにログインできます。最終的に、サポートされている のいずれかを使用してログインすることを決定する場合があります IdPs。Amazon Cognito は、古いアイデンティティが新しいアイデンティティと同じ識別子を維持し、プロファイルデータが自動的にマージされることを確実にします。
アプリケーションに、プロファイルの結合が IdentityChangedListener
インターフェイスを通じて通知されます。インターフェイスで identityChanged
メソッドを実装して、これらのメッセージを受け取ります。
@override public void identityChanged(String oldIdentityId, String newIdentityId) { // handle the change }
iOS - Objective-C
ユーザーは、認証されていないゲストとしてアプリケーションにログインできます。最終的に、サポートされている のいずれかを使用してログインすることを決定する場合があります IdPs。Amazon Cognito は、古いアイデンティティが新しいアイデンティティと同じ識別子を維持し、プロファイルデータが自動的にマージされることを確実にします。
NSNotificationCenter
はプロファイルの結合をアプリケーションに通知します。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(identityIdDidChange:) name:AWSCognitoIdentityIdChangedNotification object:nil]; -(void)identityDidChange:(NSNotification*)notification { NSDictionary *userInfo = notification.userInfo; NSLog(@"identity changed from %@ to %@", [userInfo objectForKey:AWSCognitoNotificationPreviousId], [userInfo objectForKey:AWSCognitoNotificationNewId]); }
iOS - Swift
ユーザーは、認証されていないゲストとしてアプリケーションにログインできます。最終的に、サポートされている のいずれかを使用してログインすることを決定する場合があります IdPs。Amazon Cognito は、古いアイデンティティが新しいアイデンティティと同じ識別子を維持し、プロファイルデータが自動的にマージされることを確実にします。
NSNotificationCenter
はプロファイルの結合をアプリケーションに通知します。
[NSNotificationCenter.defaultCenter().addObserver(observer: self selector:"identityDidChange" name:AWSCognitoIdentityIdChangedNotification object:nil) func identityDidChange(notification: NSNotification!) { if let userInfo = notification.userInfo as? [String: AnyObject] { print("identity changed from: \(userInfo[AWSCognitoNotificationPreviousId]) to: \(userInfo[AWSCognitoNotificationNewId])") } }
JavaScript
認証されていないユーザーとしての開始
通常、ユーザーは認証されていないロールから開始します。このロールでは、Logins プロパティを使用しないで設定オブジェクトの認証情報プロパティを設定します。この場合、デフォルト設定は次のようになります。
// set the default config object var creds = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030' }); AWS.config.credentials = creds;
認証されたユーザーへの切り替え
認証されていないユーザーが IdP にログインしたときに、トークンがあれば、カスタム関数を呼び出して認証情報オブジェクトを更新し Logins トークンを追加することで、認証されていないユーザーを認証されたユーザーに切り替えることができます。
// Called when an identity provider has a token for a logged in user function userLoggedIn(providerName, token) { creds.params.Logins = creds.params.Logins || {}; creds.params.Logins[providerName] = token; // Expire credentials to refresh them on the next request creds.expired = true; }
また、CognitoIdentityCredentials
オブジェクトを作成することもできます。作成する場合は、既存のサービスオブジェクトの認証情報プロパティをリセットして、更新された認証情報の設定内容を反映する必要があります。「グローバル設定オブジェクトの使用」を参照してください。
CognitoIdentityCredentials
オブジェクトの詳細については、 リファレンスの AWS SDK for JavaScript APIAWS CognitoIdentityCredentials「」を参照してください。
Unity
ユーザーは、認証されていないゲストとしてアプリケーションにログインできます。最終的に、サポートされている のいずれかを使用してログインすることを決定する場合があります IdPs。Amazon Cognito は、古いアイデンティティが新しいアイデンティティと同じ識別子を維持し、プロファイルデータが自動的にマージされることを確実にします。
プロファイルの結合の通知を受け取るには、IdentityChangedEvent
にサブスクライブできます。
credentialsProvider.IdentityChangedEvent += delegate(object sender, CognitoAWSCredentials.IdentityChangedArgs e) { // handle the change Debug.log("Identity changed from " + e.OldIdentityId + " to " + e.NewIdentityId); };
Xamarin
ユーザーは、認証されていないゲストとしてアプリケーションにログインできます。最終的に、サポートされている のいずれかを使用してログインすることを決定する場合があります IdPs。Amazon Cognito は、古い ID の一意の識別子を新しい ID に継承して、プロファイルデータが自動的に結合されるようにします。
credentialsProvider.IdentityChangedEvent += delegate(object sender, CognitoAWSCredentials.IdentityChangedArgs e){ // handle the change Console.WriteLine("Identity changed from " + e.OldIdentityId + " to " + e.NewIdentityId); };