swift - AWS Cognito Swift 凭证提供商 "logins is deprecated: Use AWSIdentityProviderManager"

标签 swift amazon-web-services amazon-cognito fbsdk

我试图让用户使用 Facebook 和 Amazon Cognito 注册我的应用程序。我发现以前的文档说要使用:

    let token = FBSDKAccessToken.currentAccessToken().tokenString
    var logins: NSDictionary = NSDictionary(dictionary: ["graph.facebook.com" : token])
    credentialsProvider.logins = [AWSIdentityProviderFacebook: token]

但我收到的消息表明登录已被弃用,并使用 AWSIdentityProviderManager 协议(protocol)向凭证提供商提供登录,我不知道该怎么做。 我试图让我的类实现 AWSIdentityProviderManager 并创建一个登录方法,因为我注意到 credentialsProvider 有一个方法“setIdentiyProviderManagerOnce(self)”,但我不知道在实现的 logins() 方法中该做什么来将 facebook token 连接到凭证经理。

我看过亚马逊的 github 示例,但我觉得它们似乎没什么帮助

最佳答案

环顾四周后,我终于发现我不是唯一遇到此问题的人。 AWS 在不更改主要文档的情况下更新了他们的 sdk。 解决方案是在自定义类中实现 AWSCognitoIdentityProviderManager 并将其提供给凭证提供程序。 这是 simaomi 在下面的 github 讨论中提供的代码(它更像是一个快速修复):

import Foundation
import AWSCore
import AWSCognito
import AWSCognitoIdentityProvider
class CustomIdentityProvider: NSObject, AWSCognitoIdentityProviderManager{
    var tokens : [NSString : NSString]?
    init(tokens: [NSString : NSString]) {
        self.tokens = tokens
    }
    @objc func logins() -> AWSTask {
        return AWSTask(result: tokens)
    }
}


let customProviderManager = CustomIdentityProvider(tokens: logins!)

self.credentialsProvider = AWSCognitoCredentialsProvider(
   regionType: Constants.COGNITO_REGIONTYPE,
   identityPoolId: Constants.COGNITO_IDENTITY_POOL_ID,
   identityProviderManager: customProviderManager)

sdk 示例显示了您应该如何真正实现该解决方案

在这里查看讨论: https://github.com/aws/aws-sdk-ios/issues/357

这里是更新的 sdk 示例: https://github.com/awslabs/aws-sdk-ios-samples/tree/developer-authenticated-identities-2-4/CognitoSync-Sample

关于swift - AWS Cognito Swift 凭证提供商 "logins is deprecated: Use AWSIdentityProviderManager",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37597388/

相关文章:

java - Spring Cloud SQS 轮询

iOS - AWS Cognito - 检查用户是否已经存在

amazon-dynamodb - 针对 Cognito 用户的 AWS AppSync 事件订阅过滤

ios - 在 Swift 中的 ONE ViewController 中的 View 之间传递数据

ios - 图表库中的编译时错误

objective-c - 将 Swift pod 导入 Objective-C 项目时找不到模块错误

reactjs - 使用 Amplify 实现的登录表单未应用样式

amazon-web-services - DynamoDB 写入限制问题

ios - Swift tableview 在编辑一个单元格时更改随机单元格的值

amazon-web-services - AWS Cognito - 记录最终用户事件以进行审计