我正在尝试使用 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/