2017-05-05 24 views
0

アンドロイドでS3にアップロードしようとしています。ただし、実際には画像はアップロードされません。androidのs3バケットにアップロード中にエラーが発生しました

D/CognitoCachingCredentialsProvider:それをグーグルときSharedPreferences

では見つかりません有効な資格情報がしかし、私は様々な矛盾する情報を見つけていない私が見るのエラーに似ている唯一のものはこれです。私が見つけることができる唯一の本当のことは、プロジェクトにCognitoフレームワークを適切に追加しないと発生する可能性がありますが、build.gradleにあることを確認しました。

私は、同じ資格情報を使用してiOSでうまく動作していることにも注意してください。プラットフォームごとに異なるIDプールを使用する必要があると言われました。だから私はAndroid用の新しいアイデンティティプールを作成し、一致するパーミッションを持っているかどうかを確認し、どちらもうまくいきませんでした。 iOSがどのようにうまく動作し、問題なくイメージをアップロードするかを考えてみると、Androidで使用しているコードでは何かでなければならないと感じています。私はそれを以下に含めた。

cognito

private CognitoCachingCredentialsProvider getCreadentials(Context context) { 
    CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
        context.getApplicationContext(), 
        IDENTITY_POOL_ID, 
        Regions.US_EAST_1 
      ); 

    return credentialsProvider; 
} 

そして実際にS3

public void saveImage(Context context, Bitmap data, String key, Double lat, Double lon) { 

    exifBuilder = new ExifBuilder(mContext, lat, lon); 

    File file = writeImageToFile(context, data); 
    s3 = new AmazonS3Client(getCreadentials(context)); 

    if (file != null) { 

     TransferUtility transferUtility = new TransferUtility(s3, context.getApplicationContext()); 
     TransferObserver observer = transferUtility.upload(
       BUCKET_NAME, 
       key, 
       file 
     ); 
    } 
} 

に画像を保存する機能から資格情報を取得するには、この関数は、ファイルがnullでないことを私が確認しているがあります。また、正しいIDプールIDであることも確認しました。

ここで何かが不足していると目立ちますか?

答えて

0

上記のコードから問題を引き出すことはできません。私が与えられた「エラー」は無関係であり、単にそのデバイスのユーザーIDを以前に設定していないことを意味します。ただし、S3に画像を保存するために上で呼び出された関数は、スレッドから呼び出され、UIアクティビティではネットワークアクティビティが発生しないため、呼び出しを行っていませんでした。私はcredentialsProvider.getProviderId()を出力しようとした後にこれを理解し、その旨のエラーを受け取りました。

関連する問題