AWS Cognitoのap-northeast-1リージョンで以下を作成しておく。
- UserPool
- IdentityPool
IdentityPoolには外部プロバイダーとしてUserPoolを設定する。
問題は以下のコード。
var configuration = AWSServiceConfiguration(region: .APNortheast1, credentialsProvider: nil) let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration( clientId: Constants.COGNITO_IDENTITY_USER_POOL_APP_CLIENT_ID, clientSecret: Constants.COGNITO_IDENTITY_USER_POOL_APP_CLIENT_SECRET, poolId: Constants.COGNITO_IDENTITY_USER_POOL_ID) AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration( configuration, userPoolConfiguration: userPoolConfiguration, forKey: Constants.COGNITO_IDENTITY_USER_POOL_KEY) userPool = AWSCognitoIdentityUserPool(forKey: Constants.COGNITO_IDENTITY_USER_POOL_KEY) userPool.delegate = self credentialsProvider = AWSCognitoCredentialsProvider( regionType: .APNortheast1, identityPoolId: Constants.COGNITO_IDENTITY_POOL_ID, identityProviderManager: userPool) configuration = AWSServiceConfiguration(region: .APNortheast1, credentialsProvider: credentialsProvider) AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
credentialProviderを初期化したら、例えば以下の様にLambdaを実行してみる。
UserPoolでのログインは実施済みとする。
let lambda = AWSLambdaInvoker.defaultLambdaInvoker() let request = AWSLambdaInvokerInvocationRequest() request.functionName = "FUNCTION_NAME" lambda.invoke(request).continueWithBlock { (task: AWSTask!) -> AnyObject? in print(task.result) return nil }
すると、以下の様なエラーになる。
Invalid login token. Issuer doesn't match providerName
原因は、Credentialを取得するAPIを実行するときのRequestBodyにあると思われる。
// cognito-idp.ap-northeast-1.amazonaws.comになってほしい {"Logins":{"cognito-idp.us-east-1.amazonaws.com\/ap-northeast-1_XXXXXXXXX":"TOKEN"},"IdentityPoolId":"ap-northeast-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
Loginsのところで、なぜかproviderNameのPrefixにus-east-1が指定されてしまっている。
同じような事象が起きている方いますでしょうか?
解決策があれば教えて下さい。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。