0

我正在尝试将我的应用程序与 AWS Kinesis Video Stream 控制台连接。我将此 aws文档作为参考并尝试运行此官方示例应用程序。但是每次我尝试流式传输视频时,应用程序都会崩溃,但问题的根本原因在NotAuthorizedException哪里。Access to Identity 'us-east-1:xxxx' is forbidden这是 logcat 崩溃报告。

2022-03-04 20:12:03.378 1034-1034/com.amazonaws.kinesisvideo.demoapp E/KinesisVideoAndroidClient: 2022-03-04T20:12Z T2: EXCEPTION: ExecutionException: Awaiting for the credentials update threw an exception: com.amazonaws.services.cognitoidentity.model.NotAuthorizedException: Access to Identity 'us-east-1:0a91872d-5183-49c1-9906-eeaa07e37bff' is forbidden. (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: NotAuthorizedException; Request ID: 44739d62-17b9-4aef-b88d-bc72a23da744)
2022-03-04 20:12:03.380 1034-1034/com.amazonaws.kinesisvideo.demoapp W/KinesisVideoClientWrapper: getAuthInfo(): Failed to get the object for the AuthInfo object. methodId �
2022-03-04 20:12:03.380 1034-1034/com.amazonaws.kinesisvideo.demoapp W/KinesisVideoClient: createKinesisVideoClient(): operation returned status code: 0x00000002
2022-03-04 20:12:03.380 1034-1034/com.amazonaws.kinesisvideo.demoapp I/KinesisVideoClientWrapper: throwNativeException(): Had to clear a pending exception found when throwing "Failed to create Kinesis Video client." (code 0x2)
2022-03-04 20:12:03.380 1034-1034/com.amazonaws.kinesisvideo.demoapp D/KinesisVideoClientWrapper: throwNativeException(): Throwing com/amazonaws/kinesisvideo/producer/ProducerException with message: Failed to create Kinesis Video client.
2022-03-04 20:12:03.394 1034-1034/com.amazonaws.kinesisvideo.demoapp E/StreamConfigurationFragment: Failed to create Kinesis Video client
    com.amazonaws.kinesisvideo.producer.ProducerException: Failed to create Kinesis Video client. StatusCode: 0x2
        at com.amazonaws.kinesisvideo.internal.producer.jni.NativeKinesisVideoProducerJni.createKinesisVideoClient(Native Method)
        at com.amazonaws.kinesisvideo.internal.producer.jni.NativeKinesisVideoProducerJni.create(NativeKinesisVideoProducerJni.java:235)
        at com.amazonaws.kinesisvideo.internal.producer.jni.NativeKinesisVideoProducerJni.createSync(NativeKinesisVideoProducerJni.java:247)
        at com.amazonaws.kinesisvideo.internal.producer.jni.NativeKinesisVideoProducerJni.createSync(NativeKinesisVideoProducerJni.java:212)
        at com.amazonaws.kinesisvideo.internal.client.NativeKinesisVideoClient.initializeNewKinesisVideoProducer(NativeKinesisVideoClient.java:219)
        at com.amazonaws.kinesisvideo.internal.client.NativeKinesisVideoClient.initialize(NativeKinesisVideoClient.java:136)

我也注意到在某种程度上Identity id与我在 logcat 中的不同。这是我的awsconfiguration.json

{
  "Version": "1.0",
  "CredentialsProvider": {
    "CognitoIdentity": {
      "Default": {
        "PoolId": "us-east-1:5df15755-e58c-4c1c-bb86-f5bde7f0f446",
        "Region": "us-east-1"
      }
    }
  },
  "IdentityManager": {
    "Default": {}
  },
  "CognitoUserPool": {
    "Default": {
      "AppClientSecret": "qbhmasev6saq23st6t814i8ol8v1gibfbkn5isa5hsld2i121vm",
      "AppClientId": "a7pljsm5ru9gorqj6qq5onjrn",
      "PoolId": "us-east-1_WMzcnFp2P",
      "Region": "us-east-1"
    }
  }
}

我初始化 KVS 并引发异常的部分代码:

try {
    mKinesisVideoClient = KinesisVideoAndroidClientFactory.createKinesisVideoClient(
            getActivity(),
            KinesisVideoDemoApp.KINESIS_VIDEO_REGION,
            KinesisVideoDemoApp.getCredentialsProvider());
} catch (KinesisVideoException e) {
    Log.e(TAG, "Failed to create Kinesis Video client", e);
}

getCredentialsProvider():

public class KinesisVideoDemoApp extends Application {

    public static Regions KINESIS_VIDEO_REGION = Regions.US_EAST_1;

    public static AWSCredentialsProvider getCredentialsProvider() {
        return AWSMobileClient.getInstance();
    }
    ...
}

像往常一样,我尝试上网寻找解决方案。我以这个SlackOverFlow和这个Github作为参考,并尝试了所有可能的解决方案。我确保:

-> 我有权利user pool idapp client id在我的身份Authentication Provider Coginito部分。

-> 交叉验证注册用户列在用户池中。

-> 在设置中拥有正确的角色集UnAuthAuth正确的策略identity pool

-> 我还使用别名和密钥库注册了应用程序

没有什么对我真正有用。任何形式的帮助表示赞赏!谢谢!

4

0 回答 0