我想在android上上傳到S3。但是,它實際上並沒有上傳圖片。一如當年我看到一個錯誤的唯一事情是這樣的:在android上上傳到s3桶時出錯
d/CognitoCachingCredentialsProvider:在SharedPreferences
沒有找到有效的憑據但是,谷歌搜索時,我發現各種相互矛盾的信息。我能找到的唯一真實的事情是,這可能是由於沒有正確地向項目添加cognito框架而導致的,但我已經驗證它是在build.gradle中。
我也應該注意到,我在iOS上使用相同的憑據就可以工作。有人提到我需要爲每個平臺使用不同的身份池。所以我爲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
);
}
}
我已經驗證該文件不爲空。並且還驗證它是正確的身份池ID。
這裏有什麼突出的缺失?