Я использую Okta для входа в систему, после успешного входа в систему мы получим awsAccessKey, awsSecretKey, sessionToken.И затем ниже приведены шаги для инициализации AWSAppSyncClient
// Creating the SessionCredentials and preparing the AmazonS3Client
BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(data.getS3Credentials().accessKeyId(), data.getS3Credentials().secretAccessKey(), data.getS3Credentials().sessionToken());
AmazonS3Client amazonS3Client = new AmazonS3Client(sessionCredentials);
amazonS3Client.setRegion(Region.getRegion(Regions.US_WEST_2));
OidcAuthProvider oidcAuthProvider = oktaAppAuth::getAccessToken;
AWSAppSyncClient.Builder builder = AWSAppSyncClient.builder()
.context(context)
.awsConfiguration(new AWSConfiguration(context))
.oidcAuthProvider(oidcAuthProvider);
// Adding the S3ObjectManager Implementation to the AppSyncClient
builder.s3ObjectManager(new S3ObjectManagerImplementation(amazonS3Client));
AWSAppSyncClient mAWSAppSyncClient = builder.build();
Теперь я могу запустить мутации, но при загрузке S3 я получаю следующую ошибку.Каким-то образом я выяснил, что S3 кэширует старый токен даже после повторного входа в систему и даже после перезапуска приложения.
Мутации AppSync работают нормально
Ошибка:
Received error response: com.amazonaws.services.s3.model.AmazonS3Exception: The provided token has expired. (Service: null; Status Code: 400; Error Code: ExpiredToken;