swift - AWSCognito Facebook 登录 Swift

标签 swift amazon-web-services facebook-login amazon-cognito

我正在尝试使用 AWSCognito 通过 Facebook 访问 token 登录。

我的身份池已设置并且我拥有 Facebook 访问 token 。

不幸的是,这方面的文档非常有限。有人成功让 Facebook 用户登录 AWSCognito 吗?

到目前为止我已经;

let provider: Dictionary = [AWSIdentityProviderFacebook : accessToken.authenticationToken]
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .EUWest2, identityPoolId: POOL_IDENTITY_STRING)

我假设我需要在某个地方传递提供者。

我尝试这样做;

credentialProvider.identityProvider.logins() = provider

但我得到:“无法分配给值:函数调用返回不可变值”

最佳答案

是的,我最近做了类似的事情。

您将需要使用身份提供程序管理器来初始化您的凭据提供程序。

credentialsProvider = AWSCognitoCredentialsProvider(
    regionType: xxx, 
    identityPoolId: yyy, 
    identityProviderManager: idpm)

但是,你不能只传入字典 ["graph.facebook.com" : <access token>]作为第三个参数。

您需要符合 AWSIdentityProviderManager 协议(protocol)的内容,该协议(protocol)基本上只返回一个返回字典的任务。

我最终为此制作了一个简单的包装类,请参见下文。

import AWSCognito
class myIdentityProvider: NSObject, AWSIdentityProviderManager {

var keytokens: [String:String]?

init (logins: [String:String]) {
    keytokens = logins
}

func logins () -> AWSTask<NSDictionary> {

    let task = AWSTask(result: keytokens as AnyObject?)
    return task as! AWSTask<NSDictionary>
}

}

那么,你的代码将被重写:

let provider: Dictionary = [AWSIdentityProviderFacebook : accessToken.authenticationToken]
let idpm = myIdentityProvider(provider)
let credentialProvider = AWSCognitoCredentialsProvider(
    regionType: .EUWest2, 
    identityPoolId: POOL_IDENTITY_STRING, 
    identityProviderManager: idpm)

关于swift - AWSCognito Facebook 登录 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49411769/

相关文章:

amazon-web-services - 我的 Amazon S3 客户端是同步还是异步?

ios - 如何直接在 swift 类文件中创建到 Table View Controller Scene 的 segue?

javascript - channel 网址

ios - 在 IOS 中的应用程序之间共享数据

ios - Swift 如何对多个 UITextField 使用单个 guard let 语句

amazon-web-services - 列出具有公共(public)读取权限的 S3 对象(在私有(private)存储桶中)

amazon-web-services - 无法访问 AWS ECS EC2 实例中的端口

android - 通过 Facebook 应用程序在移动浏览器中登录 Facebook

swift - 按下 mapView 的罗盘按钮时如何调用函数

ios - 检查tableView每一行的textField