Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AWSIoTManager-createKeysAndCertificateFromCsr结果为“缺少身份验证令牌”_Ios_Objective C_Amazon Web Services - Fatal编程技术网

Ios AWSIoTManager-createKeysAndCertificateFromCsr结果为“缺少身份验证令牌”

Ios AWSIoTManager-createKeysAndCertificateFromCsr结果为“缺少身份验证令牌”,ios,objective-c,amazon-web-services,Ios,Objective C,Amazon Web Services,我试图使用createKeysAndCertificateFromCsr函数创建密钥和证书,结果来自block [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionAPNortheast2

我试图使用createKeysAndCertificateFromCsr函数创建密钥和证书,结果来自block

[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionAPNortheast2
                                                                                                    credentialsProvider:nil];
AWSIoTManager *awsIoTManager = [AWSIoTManager defaultIoTManager];

// CSR information dictionary
/*
 commonName
 countryName;
 organizationName;
 organizationalUnitName;
 */
NSString *commonName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];

NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSString *countryName = [usLocale displayNameForKey: NSLocaleCountryCode value:countryCode];

NSString *organizationName = [[NSBundle mainBundle].bundleIdentifier componentsSeparatedByString:@"."][1];
NSString *organizationalUnitName = [[NSBundle mainBundle].bundleIdentifier componentsSeparatedByString:@"."][2];;

NSLog(@"commonName = %@ \
      commonName = %@ \
      organizationName = %@ \
      organizationalUnitName = %@",commonName, countryName, organizationName, organizationalUnitName);

NSDictionary <NSString *, NSString *> * csrDictionary = @{@"commonName":commonName,
                                                          @"countryName":countryName,
                                                          @"organizationName":organizationName,
                                                          @"organizationalUnitName":organizationalUnitName};

// Create CSR
[awsIoTManager createKeysAndCertificateFromCsr:csrDictionary
                                      callback:^(AWSIoTCreateCertificateResponse *mainResponse) {
当我检查块的参数时。此错误消息为零

错误域=com.amazonaws.AWSIoTErrorDomain Code=0缺少身份验证令牌UserInfo={NSLocalizedDescription=缺少身份验证令牌,NSLocalizedFailureReason=缺少身份验证令牌异常}


给我一些建议。谢谢。

要使此功能正常工作,您需要提供有效的AWSCredentialsProvider。
AWSStaticCredentialsProvider,您在其中使用除测试外不推荐的访问和密钥,或者根据您的设置,使用其他可用的提供商之一,如AWSWebIdentityCredentialsProvider或AWSCOgnitocCredentialsProvider。它们都在AWSIdentityProvider.h文件中声明

你说得对。但是我试着找到了一条路,除了一个必要的供应商,最后我找到了。无论如何谢谢你!您的答案是正确的。另一种方法是使用匿名凭据提供程序并使用证书进行连接,但这需要有生成证书的机制。。。