我正在尝试将我的应用程序与 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 id
,app client id
在我的身份Authentication Provider
Coginito
部分。
-> 交叉验证注册用户列在用户池中。
-> 在设置中拥有正确的角色集UnAuth
和Auth
正确的策略identity pool
。
-> 我还使用别名和密钥库注册了应用程序
没有什么对我真正有用。任何形式的帮助表示赞赏!谢谢!