【发布时间】:2016-12-11 08:59:13
【问题描述】:
我正在尝试使用 Facebook 凭据登录 AWS。我已经使用 Facebook 作为我在 Amazon Cognito 上的社交身份提供商设置了一个联合身份,但由于某种原因它没有进行身份验证。亚马逊上的文档不是最新的,所以我不知道该怎么做。
以下是来自 ios 应用的一些 swift 代码:
let token = FBSDKAccessToken.currentAccessToken().tokenString
let provider = MyProvider(tokens: [AWSIdentityProviderFacebook: token])
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: region, identityPoolId: poolId, identityProviderManager: provider)
let configuration = AWSServiceConfiguration(region: region, credentialsProvider:credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
let id = credentialsProvider.getIdentityId()
这是 MyProvider 类:
import Foundation
import AWSCognitoIdentityProvider
class MyProvider:NSObject, AWSIdentityProviderManager{
var tokens : [NSString : NSString]?
init(tokens: [NSString : NSString])
{
self.tokens = tokens
}
@objc func logins() -> AWSTask {
return AWSTask(result: tokens)
}
}
我能够从 Facebook 获取令牌并登录,但是当我将此令牌传递给 Cognito 时,我收到类似“NotAuthorizedException”“令牌不是来自此身份池的受支持提供者”之类的错误。我传递给 AWSCognitoCredentialsProvider 的池 ID 和区域与 Amazon Cognito 上的匹配,我在 MyProvider 中定义的方法被调用。如果有人让它工作,请分享你做了什么让它工作。我将不胜感激任何建议和帮助!
【问题讨论】:
标签: ios swift amazon-web-services aws-sdk facebook-sdk-4.0