AWSCognito Facebook Login Swift



我正在尝试使用 AWSCognito 使用 Facebook Access Token 登录。

的身份池已设置,我有Facebook访问令牌。

不幸的是,这方面的文档非常有限。 有没有人成功地让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协议的东西,它基本上只返回一个返回字典的任务。

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

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)

最新更新