2016-08-05 98 views
0

我想使用Facebook凭据登录到AWS。我已经使用Facebook作为我在Amazon Cognito上的社交身份提供商建立了联邦身份标识,但由于某种原因,它未进行身份验证。亚马逊的文档不是最新的,所以我不知道该怎么做。ios swift AWS认证和Facebook身份验证

下面是从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”“令牌不是来自此身份池的受支持提供者。”我将传递给AWCognitoCredentialsProvider的池ID和区域与Amazon Cognito中的相匹配,我在MyProvider中定义的方法被调用。如果任何人有它的工作,请分享你所做的工作。我会感谢任何意见和帮助!

回答

0

以某种方式解决了我的问题。我所做的只是删除了我的身份库和Facebook应用程序,并创建了新的。它现在工作正常。

0

您的登录地图中的关键应该是graph.facebook.com。尝试使用AWSCognitoLoginProviderKey.Facebook.rawValue而不是AWSIdentityProviderFacebook

+1

AWSCognitoLoginProviderKey.Facebook.rawValue已弃用 – plot

+0

嗨,您是否已通过AWS实施Facebook登录。我努力实现这一点,请帮助我做到这一点。 – vijay

+0

使用Cognito所需的大量代码和设置令人兴奋。我发现Firebase要更快更聪明,更容易整合。 – Annjawn