【问题标题】:AWS: DeveloperAuthenticatedIdentityProvider not firing IOS SwiftAWS:DeveloperAuthenticatedIdentityProvider 没有触发 IOS Swift
【发布时间】:2018-05-28 10:08:14
【问题描述】:

我正在尝试集成 S3 上传来上传视频文件,并尝试了开发人员身份验证的身份方法。一切都按照aws docs 所说的进行配置。

DeveloperAuthenticatedIdentityProvider 类:

class DeveloperAuthenticatedIdentityProvider : AWSCognitoCredentialsProviderHelper {
    override func token() -> AWSTask<NSString> {
    //return AWSTask //with token and will set identityId
}

然后

let devAuth = DeveloperAuthenticatedIdentityProvider(regionType: COGNITO_REGION, identityPoolId: COGNITO_POOL_ID, useEnhancedFlow: true, identityProviderManager:nil)
let credentialsProvider = 
AWSCognitoCredentialsProvider(regionType: COGNITO_REGION, identityProvider:devAuth)

let configuration = 
AWSServiceConfiguration(region: S3_REGION, credentialsProvider:credentialsProvider)

AWSServiceManager.default().defaultServiceConfiguration = configuration

配置这些东西后尝试使用 AWSS3TransferManager

上传
let transferManager = AWSS3TransferManager.default()

let uploadingFileURL = URL(fileURLWithPath: "your/file/path/myTestFile.txt")

let uploadRequest = AWSS3TransferManagerUploadRequest()

uploadRequest.bucket = "myBucket"
uploadRequest.key = "myTestFile.txt"
uploadRequest.body = uploadingFileURL
transferManager.upload(uploadRequest).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in

    if let error = task.error as? NSError {
        if error.domain == AWSS3TransferManagerErrorDomain, let code = AWSS3TransferManagerErrorType(rawValue: error.code) {
            switch code {
            case .cancelled, .paused:
                break
            default:
                print("Error uploading: \(uploadRequest.key) Error: \(error)")
            }
        } else {
            print("Error uploading: \(uploadRequest.key) Error: \(error)")
        }
        return nil
    }

    let uploadOutput = task.result
    print("Upload complete for: \(uploadRequest.key)")
    return nil
})

每当我调用 Upload 方法时,它都会显示

[错误域=com.amazonaws.AWSCognitoIdentityErrorDomain 代码=8 "(null)" UserInfo={__type=NotAuthorizedException, message=此身份不支持未经身份验证的访问 池。}]

还有DeveloperAuthenticatedIdentityProvider没有被解雇

请帮忙。

【问题讨论】:

标签: ios swift amazon-s3 amazon-cognito


【解决方案1】:

当您使用 Developer 身份验证身份作为 cognito 身份提供者时,您无需使用 AWSS3TransferManager.default() 您需要使用密钥将 AWSServiceConfiguration 注册到 AWSS3TransferManager

AWSS3TransferManager.register(with: configuration!, forKey: “钥匙”)

试试这个方法:

let devAuth = DeveloperAuthenticatedIdentityProvider(regionType:  COGNITO_REGION, identityPoolId: COGNITO_POOL_ID, useEnhancedFlow: true, identityProviderManager:nil)
    let credentialsProvider = AWSCognitoCredentialsProvider(regionType: COGNITO_REGION, identityProvider:devAuth)
    let configuration = AWSServiceConfiguration(region: S3_REGION, credentialsProvider:credentialsProvider)

    AWSS3TransferManager.register(with: configuration!, forKey: "YOUR_KEY")

//Start Upload

let uploadRequest = AWSS3TransferManagerUploadRequest()

 //Set all properties to uploadRequest

    AWSS3TransferManager.s3TransferManager(forKey: "YOUR_KEY").upload(uploadRequest!).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in
                // Do something with the response

                if task.isCancelled {
                    print("Cancelled Upload")

                }
                else if (task.error != nil) {

                    print("Upload error --> \(task.error)")
                }else{

                    print("Upload success!!! Be happy :)")

                }
                return task
            })

试试吧,我觉得可能会成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-17
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多