AWS iOS SDK 2.4.0 和 Cognito 文档

AWS iOS SDK 2.4.0 & Cognito documentation

使用 AWS iOS SDK 2.4.0 Amazon 的文档落后了。有关编写代码以支持联合身份的页面,尤其是如何刷新令牌 ID 的页面不再反映代码。

例如,此页面 http://docs.aws.amazon.com/cognito/latest/developerguide/open-id.html 指的是 credentialsProvider.logins,它在 SDK 2.4.0

中不存在

有谁知道是否有其他人记录了亚马逊 iOS SDK 的这方面内容?还是其他地方的亚马逊?

Amazon 现在已经发布了 2.4.10,我想说,它的重点已经转移到它的用户池产品上,这让我担心 AWS Federated Identities 产品可能很快就会被弃用。

联合身份不会被弃用。我们将更新文档。同时,我可以提供一些权宜之计。在 2.4 中,登录字典切换为拉模型。每当需要刷新 AWS 凭证时,SDK 都会要求您提供更新的登录字典。要使用它,请向您的凭据提供程序提供 AWSIdentityProviderManager 的实现。下面是一些部分代码,向您展示了如何实现登录方法。它显示了如果您有当前令牌如何同步执行此操作,如果您必须调用服务来获取令牌则如何异步执行此操作。

同步获取token

- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins {
    return [AWSTask taskWithResult: @{ @"login.provider.com" : token}];
}

异步获取令牌

- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins {
    AWSTaskCompletionSource<NSString*> *token = [AWSTaskCompletionSource new];
    [self getOpenIdToken:token];
    return [token.task continueWithSuccessBlock:^id _Nullable(AWSTask<NSString *> * _Nonnull task) {
        return [AWSTask taskWithResult: @{ @"login.provider.com" : task.result }];
    }];
}

- (void) getOpenIdToken: (AWSTaskCompletionSource <NSString*>*) token {
    //call your server to get the token
    //...

    if(success){
        token.result = oidcTokenFromServer;
    }else {
        [token setError:[NSError errorWithDomain:@"oidc"
                                            code:-1
                                        userInfo:@{@"error":@"Unable to get open id connect token"}]];
    }
}