2016-03-31 6 views
0
private Response.Listener<JSONObject> awsCognitoResponseListener = new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject jsonObject) { 
       bar.setProgress(50); 
       Log.d("awsCognito Response:", jsonObject.toString()); 
       try { 
        strIdentityPoolID = jsonObject.getString("IdentityPoolId"); 
        identityID = jsonObject.getString("IdentityId"); 
        strToken = jsonObject.getString("Token"); 
        developerProviderName = jsonObject.getString("DeveloperProviderName"); 
        // Toast.makeText(getActivity(), IdentityPoolId, Toast.LENGTH_SHORT).show(); 
        File fileToUpload = new File(AppConstants.MAIN_DIRECTORY + File.separator + "Recordings" + "/" + chosenFile); 
        Log.v(TAG, fileToUpload.getPath()); 
        Uri uri = Uri.fromFile(fileToUpload); 
        Log.v(TAG, uri.getPath()); 
        HomeActivity parentActivity = (HomeActivity) getActivity(); 
        /*Developer Authentication Access*/ 
        AWSAsyncTask mAwsAsyncTask = new AWSAsyncTask(); 
        mAwsAsyncTask.execute(); 
       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 

      } 
     }; 
    private class AWSAsyncTask extends AsyncTask<Void, String, String> 
    { 
     private String errorResponse; 
     @Override 
     protected void onPreExecute() 
     { 
      super.onPreExecute(); 
     } 
     @Override 
     protected String doInBackground(Void... voids) { 
      PutObjectResult putResponse = null; 
      CognitoParams cognitoParams = new CognitoParams(); 
      cognitoParams.setIdentityPoolId(strIdentityPoolID); 
      cognitoParams.setIdentityId(identityID); 
      cognitoParams.setDeveloperProviderName(developerProviderName); 
      cognitoParams.setRegions(getRegion()); 
      DeveloperAuthenticationProvider developerProvider = new DeveloperAuthenticationProvider(null, getActivity(), cognitoParams); 
      CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(getActivity(),developerProvider,getRegion()); 
      Map<String, String> logins = credentialsProvider.getLogins(); 
      if (logins == null) 
      { 
       logins = new HashMap<String, String>(); 
      } 
      logins.put(AppConstants.DEVELOPER_PROVIDER, strToken.trim()); 
      credentialsProvider.setLogins(logins); 
      try 
      { 
       AmazonS3Client s3Client = new AmazonS3Client(credentialsProvider); 
       File fileToUpload = new File(AppConstants.MAIN_DIRECTORY + File.separator + "Recordings" + "/" + chosenFile); 
       s3Client.setRegion(Region.getRegion(getRegion())); 
       PutObjectRequest putRequest = new PutObjectRequest(BucketName, S3FileName, fileToUpload); 
       putResponse = s3Client.putObject(putRequest); 
       Log.v("Response bimal: ", putResponse.toString()); 
       return putResponse.toString(); 
      } 
      catch (NotAuthorizedException e) 
      { 
       Log.e(TAG, e.getErrorMessage()); 
       errorResponse = e.getErrorMessage(); 
      } 
      catch (InvalidIdentityPoolConfigurationException e) 
      { 
       Log.e(TAG, e.getErrorMessage()); 
       errorResponse = e.getErrorMessage(); 
      } 
      return null; 
     } 
     @Override 
     protected void onPostExecute(String s) 
     { 
      super.onPostExecute(s); 
      flag_btnClick = 1; 
      if (s != null) 
      { 
       uploadConfirmAPI(); 
      } 
      else 
      { 
       errorDialog(errorResponse); 
      } 
     } 
    } 

開発者認証アイデンティティ
開発者が身元を認証し、まだユーザーデータとアクセスを同期するためにアマゾンCognitoを使用している間、あなたは、あなた自身の既存の認証プロセスを経てユーザーを登録し、認証することができますAWSリソース開発者認証IDを使用すると、エンドユーザデバイス、バックエンドの認証、およびAmazon Cognitoとのやりとりが行われますが、CognitoCachingCredentialsProviderは設定されていません。トークンとidentityIDアマゾンCognito不正ログイントークンのAndroid

+0

それは上から貼り付けられたテキストだけのように見えますマニュアルでは、あなたが何を求めているのかは明らかではありません。 – halfer

+0

DeveloperAuthenticationProviderをCognitoParamsに渡し、次にCognitoCachingCredentialsProviderをDeveloperAuthenticationProviderに渡してから、logins.put(AppConstants.DEVELOPER_PROVIDER、strToken.trim())の後に渡します。 これはCognitoCachingCredentialsProviderのidentityIDとTokenに設定されていますが、実際にはnullなので、CognitoCachingCredentialsProviderでこの2つの値を設定するにはどうすればいいですか。私はデバッグモードを私のファイルアップロードの成功を価値に設定している場合。 – bimal

答えて

2

DeveloperAuthenticationProviderでは、update(identityId、token)を呼び出す必要があります。

また、バックエンドサーバーから戻ってきたトークンがnullでないことも確認する必要があります。

あなたが開発者認証アイデンティティを?:使用する方法を示しCognitoサンプルを見てとっている
https://github.com/awslabs/aws-sdk-android-samples/blob/master/CognitoSyncDemo/src/com/amazonaws/cognito/sync/demo/DeveloperAuthenticationProvider.java

ドキュメント:
http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html

+0

ありがとうマーク私はチェックし、私はあなたに言う – bimal

関連する問題