在iOSSDK(v2.4.8)中,我不能注销一个用户,然后以不同的用户正确登录。
AWS为第一个用户(自应用程序启动后)返回的(正确的)cognityIdentityId也为第二个用户返回(除非应用程序重新启动)。这允许另一个用户访问一个用户的AWSCognitoDataset。
我认为这是因为iOS SDK缓存了id,而清除该缓存的记录调用无法完全工作。
登录时:
// one-off initialisation
self.credentialsProvider=AWSCognitoCredentialsProvider(regionType:AWSRegionType.USEast1,identityPoolId:Constants.CognitoIdentityPoolId)let configuration=AWSServiceConfiguration(region:AWSRegionType.USEast1,credentialsProvider:self.credentialsProvider)AWSServiceManager.defaultServiceManager().defaultServiceConfiguration=configuration…//我从外部提供程序serice(Auth0)func doAmazonLogin获取idToken(idToken:字符串,success:()-
//Initialize clients for new idToken
if self.credentialsProvider?.identityProvider.identityProviderManager == nil || idToken != Application.sharedInstance.retrieveIdToken() {
let logins = [Constants.CognitoIDPUrl: idToken]
task = self.initializeClients(logins)
} else {
//Use existing clients
self.credentialsProvider?.invalidateCachedTemporaryCredentials()
task = self.credentialsProvider?.getIdentityId()
}
//Make login
task!.continueWithBlock { (task: AWSTask!) -> AnyObject! in
if (task.error != nil) {
failure(task.error!)
} else {
// the task result will contain the identity id
let cognitoId:String? = task.result as? String
self.customIdentityProviderManager!.addToken(Constants.CognitoIDPUrl, value:idToken)
//Store Cognito token in keychain
Application.sharedInstance.storeCognitoToken(cognitoId)
success()
}
return nil
}
}
func initializeClients(logins: [NSObject:AnyObject]?) -> AWSTask? {
//Create identity provider managet with logins
let manager = CustomIdentityProviderManager(tokens: logins!)
self.credentialsProvider?.setIdentityProviderManagerOnce(manager)
return self.credentialsProvider?.getIdentityId()
}
注销时:
// Clear ALL saved values for this provider (identityId, credentials, logins). [docs][1]
let keychain = A0SimpleKeychain(service:"…")
keychain.clearAll()
我还尝试添加:
credentialsProvider!.clearCredentials()
credentialsProvider!.clearKeychain()
是否有人正在使用AWS iOS SDK并已成功编码注销,以便新用户可以干净地登录?
有一个奇怪的命名方法凭据Provider.set标识提供商管理器一旦()
-我找不到这个记录,但它的名字表明它应该每个会话只被调用一次。但是如果keychain.clearAll()
删除了登录
,那么每次新用户登录时,都需要调用set标识符提供商管理器一旦
,以便每次都设置登录
。
你能描述一下你的登录/注销流程吗?Cognito不支持每个标识来自同一个提供商的多个登录,所以听起来,除非您使用多个,否则它实际上不会更改标识。
无论如何,您是否在凭据提供程序上尝试了clearKeyChain方法?它主要用于像这样的用例——清除一切。
问题内容: 我正在尝试使用Java从使用SFTP(而不是FTPS)的服务器检索文件。我怎样才能做到这一点? 问题答案: 另一个选择是考虑查看JSch库。JSch似乎是一些大型开源项目的首选库,其中包括Eclipse,Ant和Apache Commons HttpClient。 它很好地支持用户/通过和基于证书的登录,以及所有其他许多美味的SSH2功能。 这是通过SFTP检索的简单远程文件。错误处理
我正试图从ftp服务器检索一个文件,但我得到如下错误。请你帮帮我好吗 导入java.io.BufferedOutputStream; 导入java.io.file; 导入java.io.FileOutputStream; 导入java.io.IOException; 导入java.io.InputStream; 导入java.io.OutputStream; 导入java.text.DateFor
在以下片段中,是blob键吗?
我正在尝试使用phonegap构建ios应用程序 我希望来自远程服务器的数据显示在phonegap中。在我的服务器上我有php/mysql,在客户端我有phonegap和在jquery mobile中开发应用程序。 我知道我需要使用jsonp,但我有问题。 在服务器端,我开发了非常简单的应用程序。 我有两个php页面。 第一个php页面列表。php,显示导航列表(主页、关于我们、画廊)。第二个ph
我想在项目拆除脚本中添加项目的endpoint。在运行项目之前,用户将通过所有请求和测试请求分配他们的endpoint,为了获得所有请求和测试请求的endpoint,语法是什么? 我看到了一个使用测试步骤的示例,但我不想通过测试步骤路由检索它: 分解脚本使用日志、上下文、运行程序和项目变量。 谢谢
本文向大家介绍SAP BI从Web服务检索PDF,包括了SAP BI从Web服务检索PDF的使用技巧和注意事项,需要的朋友参考一下 尝试使用REST SDK来检索文档并将其转换为PDF。请按照以下步骤操作: 登录:POST / biprws / logon / long 获取文档提示(如果有的话)GET / biprws / raylight / v1 / documents / 5690743