Bra*_*eck 4 amazon-web-services swift amazon-cognito fbsdk
我试图允许用户使用Facebook和Amazon Cognito来注册我的应用程序。我发现以前的文档说要使用:
let token = FBSDKAccessToken.currentAccessToken().tokenString
var logins: NSDictionary = NSDictionary(dictionary: ["graph.facebook.com" : token])
credentialsProvider.logins = [AWSIdentityProviderFacebook: token]
Run Code Online (Sandbox Code Playgroud)
但是我收到一条消息,提示已弃用登录名,并使用协议AWSIdentityProviderManager向凭证提供程序提供登录名,我不知道该怎么做。我尝试让我的类实现AWSIdentityProviderManager并创建了一个logins方法,因为我注意到凭据提供者有一个方法“ setIdentiyProviderManagerOnce(self)”,但是我不知道在实现的logins()方法中如何将Facebook令牌连接到凭据上经理。
香港专业教育学院看过亚马逊的github例子,但我似乎并没有太大帮助
环顾四周后,我终于发现我不是唯一遇到此问题的人。AWS在不更改主要文档的情况下更新了sdk。解决方案是在自定义类中实现AWSCognitoIdentityProviderManager并将其提供给凭证提供者。继承人simaomi在下面的github讨论中提供的代码(更多是快速修复):
import Foundation
import AWSCore
import AWSCognito
import AWSCognitoIdentityProvider
class CustomIdentityProvider: NSObject, AWSCognitoIdentityProviderManager{
var tokens : [NSString : NSString]?
init(tokens: [NSString : NSString]) {
self.tokens = tokens
}
@objc func logins() -> AWSTask {
return AWSTask(result: tokens)
}
}
let customProviderManager = CustomIdentityProvider(tokens: logins!)
self.credentialsProvider = AWSCognitoCredentialsProvider(
regionType: Constants.COGNITO_REGIONTYPE,
identityPoolId: Constants.COGNITO_IDENTITY_POOL_ID,
identityProviderManager: customProviderManager)
Run Code Online (Sandbox Code Playgroud)
sdk示例显示了您应如何真正实施解决方案
在这里查看讨论内容:https : //github.com/aws/aws-sdk-ios/issues/357
此处提供更新的sdk示例:https : //github.com/awslabs/aws-sdk-ios-samples/tree/developer-authenticated-identities-2-4/CognitoSync-Sample
| 归档时间: |
|
| 查看次数: |
2802 次 |
| 最近记录: |