Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Logins don't match. Please include at least one valid login for this identity or identity pool

I am trying to put login credentials like access token of auth0 login to amazon cognito and then try to upload a profile picture in my app. I am getting error from amazon like:

Logins don't match. Please include at least one valid login for this identity or identity pool. (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: NotAuthorizedException; Request ID: 0fafe672-2863-11e9-8f0e-cdc8b612afa1)

UploadImageTask.java

private class UploadImageTask extends AsyncTask<Void, Demo, Demo> {
        final ConditionVariable conditionVariable = new ConditionVariable(false);
        Demo demo = new Demo();
        File compressImage;
        private User user;

        UploadImageTask(User user) {
            this.user = user;
        }

        @Override
        protected Demo doInBackground(Void... params) {
            compressImage = new File(compressImage(user.getProfileUrl()));
            String uniqueId = UUID.randomUUID().toString();
            final String keyName = "user/" + uniqueId + Global.IMAGE_JPG_EXTENSION;
            CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
                    SettingsAccountActivity.this,
                    BuildConfig.AMAZON_POOL_ID,
                    Regions.fromName(BuildConfig.AMAZON_REGION));
            ClientConfiguration configuration = new ClientConfiguration();
            SessionManager sessionManager = new SessionManager(SettingsAccountActivity.this);
            String accessToken = sessionManager.getAuthToken().getAccess_Token();
            Map<String, String> logins = new HashMap<>();
            logins.put("myname.auth0.com", "Bearer "+ accessToken);
            AppLogger.d(getTag(), logins.toString());
            credentialsProvider.setLogins(logins);
            configuration.setMaxErrorRetry(3);
            configuration.setConnectionTimeout(501000);
            configuration.setSocketTimeout(501000);
            configuration.setProtocol(Protocol.HTTP);
            AmazonS3Client s3Client = new AmazonS3Client(credentialsProvider, configuration);
            if (BuildConfig.FLAVOR == Global.FLAVOR_PRO) {
                s3Client.setRegion(Region.getRegion(Regions.fromName("us-east-2")));
            }
            TransferUtility transferUtility = new TransferUtility(s3Client, SettingsAccountActivity.this);
            ObjectMetadata objectMetadata = new ObjectMetadata();
            objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
            TransferObserver observer = transferUtility.upload(BuildConfig.BUCKET_NAME, keyName,
                    compressImage, objectMetadata);
            observer.setTransferListener(new TransferListener() {
                @Override
                public void onStateChanged(int id, TransferState state) {
                    if (state == TransferState.COMPLETED) {
                        user.setProfileUrl(keyName);
                        demo.setShow(true);
                        demo.setKeyName(keyName);
                        FutureTarget<File> futureTarget = Glide.with(getApplicationContext())
                                .load(BuildConfig.AMAZON_URL + BuildConfig.BUCKET_NAME + "/" + keyName)
                                .downloadOnly(1024, 1024);
                        new Thread(() -> {
                            try {
                                File file = futureTarget.get();
                                String path = file.getAbsolutePath();
                                AppLogger.d(getTag(), "----------------- cache Image: " + path);
                            } catch (InterruptedException | ExecutionException e) {
                                AppLogger.e(getTag(), e.getMessage(), e);
                            }
                            conditionVariable.open();
                        }).start();
                    }
                }


                @Override
                public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
                    AppLogger.d(getTag(), "--- is Uploading");
                }

                @Override
                public void onError(int id, Exception ex) {
                    AppLogger.e(getTag(), ex.getMessage(), ex);
                    conditionVariable.open();
                    demo.setKeyName(keyName);
                    demo.setShow(false);
                }
            });
            conditionVariable.block();
            return demo;
        }

        @Override
        protected void onPostExecute(Demo demo) {
            super.onPostExecute(demo);
            if (compressImage.exists() && compressImage.delete()) {
                AppLogger.d(getTag(), "Compress image deleted");
            }
            if (demo.isShow()) {
                String keyName = demo.getKeyName();
                AppLogger.d("Key name is:", keyName);
                if (user.getProfileUrl().startsWith(Global.FIELD_HTTP) || user.getProfileUrl().startsWith(Global.FIELD_HTTPS)) {
                    url = user.getProfileUrl();
                    user.setProfileUrl(url);
                } else {
                    url = BuildConfig.AMAZON_URL + BuildConfig.BUCKET_NAME + "/" + user.getProfileUrl();
                    user.setProfileUrl(url);
                    AppLogger.e("AMAZON URL:::", "url is:" + url);
                }
                Glide.with(getApplicationContext())
                        .load(url)
                        .transform(new GlideCircleTransform(getApplicationContext()))
                        .override(100, 200)
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .listener(new RequestListener<String, GlideDrawable>() {
                            @Override
                            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                                mProgressView.setVisibility(View.GONE);
                                return false;
                            }

                            @Override
                            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                                mProgressView.setVisibility(View.GONE);
                                return false;
                            }
                        })
                        .into(userAccountImage);
                SessionManager manager = new SessionManager(SettingsAccountActivity.this);
                manager.getAuthToken().getUser().setProfileUrl(url);
                AuthToken token = manager.getAuthToken();
                manager.startSession(token);
                ApiClient apiClient = new ApiClient(SettingsAccountActivity.this);
                apiClient.changeProfile(keyName, imageApiCallback);

            } else {
                showProgress(false);
                mProgressView.setVisibility(View.GONE);
                //Toast.makeText(SettingsAccountActivity.this, getResources().getString(R.string.string_java_toast_error_in_adding_task), Toast.LENGTH_SHORT).show();
            }
        }
    }

I am doing this to upload image and try to put accesstoken to amazon cognito. But I am getting error and image is not getting upload.

ErrrLog:

2019-02-04 15:25:53.776 23419-25377/com.visualogyx.app.dev E/CognitoCachingCredentialsProvider: Failure to get credentials
    com.amazonaws.services.cognitoidentity.model.NotAuthorizedException: Logins don't match. Please include at least one valid login for this identity or identity pool. (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: NotAuthorizedException; Request ID: 0fafe672-2863-11e9-8f0e-cdc8b612afa1)
        at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:729)
        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:405)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:212)
        at com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.invoke(AmazonCognitoIdentityClient.java:559)
        at com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.getId(AmazonCognitoIdentityClient.java:445)
        at com.amazonaws.auth.AWSAbstractCognitoIdentityProvider.getIdentityId(AWSAbstractCognitoIdentityProvider.java:172)
        at com.amazonaws.auth.AWSEnhancedCognitoIdentityProvider.refresh(AWSEnhancedCognitoIdentityProvider.java:76)
        at com.amazonaws.auth.CognitoCredentialsProvider.startSession(CognitoCredentialsProvider.java:601)
        at com.amazonaws.auth.CognitoCredentialsProvider.getCredentials(CognitoCredentialsProvider.java:388)
        at com.amazonaws.auth.CognitoCachingCredentialsProvider.getCredentials(CognitoCachingCredentialsProvider.java:442)
        at com.amazonaws.auth.CognitoCachingCredentialsProvider.getCredentials(CognitoCachingCredentialsProvider.java:76)
        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4619)
        at com.amazonaws.services.s3.AmazonS3Client.getBucketRegionViaHeadRequest(AmazonS3Client.java:5377)
        at com.amazonaws.services.s3.AmazonS3Client.fetchRegionFromCache(AmazonS3Client.java:5352)
        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4616)
        at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1728)
        at com.amazonaws.mobileconnectors.s3.transferutility.UploadTask.uploadSinglePartAndWaitForCompletion(UploadTask.java:214)
        at com.amazonaws.mobileconnectors.s3.transferutility.UploadTask.call(UploadTask.java:88)
        at com.amazonaws.mobileconnectors.s3.transferutility.UploadTask.call(UploadTask.java:47)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)

can someone help me to resolve this issue? I have already visit the amazon forums ans and try this: https://forums.aws.amazon.com/thread.jspa?threadID=243850 but didn't work.

Thanks.

like image 619
Grishma Ukani Avatar asked Nov 07 '22 21:11

Grishma Ukani


1 Answers

This should be a configuration problem. As solution You have to create a new identity pool from scratch and added during the creation, cognito user pool as authentication provider.

if above solution doesn't work, then workaround

one more solution

like image 55
Aks4125 Avatar answered Nov 12 '22 16:11

Aks4125