【问题标题】:CognitoCachingCredentialsProvider error "No valid credentials found in SharedPreferences"CognitoCachingCredentialsProvider 错误“在 SharedPreferences 中找不到有效凭据”
【发布时间】:2014-12-26 01:15:04
【问题描述】:

我正在尝试实现 Amazon 提供的用于连接到 DynamoDb 的示例代码。第一步是客户端的初始化,亚马逊表示要在常量类中定义凭据并按如下方式使用它们:

private void initClients() {
    CognitoCachingCredentialsProvider credentials = new CognitoCachingCredentialsProvider(
            context,
            Constants.ACCOUNT_ID,
            Constants.IDENTITY_POOL_ID,
            Constants.UNAUTH_ROLE_ARN,
            null,
            Regions.US_EAST_1);

当我执行代码时,我得到以下信息: D/CognitoCachingCredentialsProvider:从 SharedPreferences 加载凭据 D/CognitoCachingCredentialsProvider:在 SharedPreferences 中找不到有效凭据

然后我创建了一个 SharedPreferences 文件并将凭据放入其中,但仍然出现相同的错误。在这种情况下,有谁知道 CognitoCachingCredentialsProvider 在寻找什么以及在哪里寻找?

【问题讨论】:

  • 这是唯一的要求吗?我认为它有你可能还没有放置的第 3 方的东西

标签: android amazon-cognito


【解决方案1】:

该消息不是错误 - 只是您还没有凭据的通知。不必担心创建由 Cognito 内部处理的 SharedPreferences 文件。一旦您通过凭据提供程序执行任何需要它获取凭据的操作,它将自动在内部缓存它们。

【讨论】:

  • 谢谢。这很有帮助。
【解决方案2】:

除了 Viktor Burmaka 给出的答案,我想指出亚马逊指南 (http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/s3transferutility.html) 有点不完整。

它说要添加行:

<service
  android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"
  android:enabled="true" />

androidmanifest.xml 文件

但是

它没有提到该行需要像这样嵌套在 &lt;application&gt;&lt;/application&gt; 标记中:

<application>
    ...
    <service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService" android:enabled="true" />
    ...
</application>

我通过 Android 文档找到了这个:https://developer.android.com/guide/topics/manifest/service-element.html

上面写着:

<service>
SYNTAX:
<service android:description="string resource"
         android:directBootAware=["true" | "false"]
         android:enabled=["true" | "false"]
         android:exported=["true" | "false"]
         android:icon="drawable resource"
         android:isolatedProcess=["true" | "false"]
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string" >
    . . .
</service>
CONTAINED IN:
<application>

NETWORK_STATE 权限

Android Studio 还要求我添加此权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

【讨论】:

    【解决方案3】:

    请检查您的清单文件。我使用 s3,错过时我也有同样的情况

     <service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"
    android:enabled="true" />
    

    【讨论】:

      猜你喜欢
      • 2017-10-15
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      • 2022-06-16
      • 2016-01-22
      • 2020-06-03
      • 1970-01-01
      • 2015-10-17
      相关资源
      最近更新 更多