0
我有一個應用程序通過AWS Cognito使用Facebook提供程序成功登錄。在登錄身份後直接使用應用程序可以被檢索,並且一切似乎都很好。IdentityId無在iOS App中使用AWS Cognito和Facebook登錄
但是,經過一段時間(大約> 1小時)後,回到應用程序時,身份標識似乎沒有被填寫。奇怪的是,用戶名仍然填寫 - 只是不是ID。
let identity = self.getLoggedInIdentity()
let id = identity?.identityId //this is nil
let username = identity?.userName //this still has a value
func getLoggedInIdentity() -> AWSIdentityManager? {
if userIsLoggedIn() {
return AWSIdentityManager.defaultIdentityManager()
}
return nil
}
func userIsLoggedIn() -> Bool {
let identityManager = AWSIdentityManager.defaultIdentityManager()
return identityManager.loggedIn
}
我從AWS示例應用程序開始,包括AWS Mobile Hub自動生成的AWSMobileHubHelper框架。
我認爲,問題是,會議沒有被成功恢復爲完成塊中此功能重新推出的應用程序後,永遠不會觸發:在重新推出的應用
func didFinishLaunching(application: UIApplication, withOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
print("didFinishLaunching:")
if (!isInitialized) {
print("AWSIdentityManager Attempt Resume Session")
AWSIdentityManager.defaultIdentityManager().resumeSessionWithCompletionHandler({(result: AnyObject?, error: NSError?) -> Void in
print("AWSIdentityManager Resume Session Result: \(result) \n Error:\(error)")
})
isInitialized = true
}
let didFinishLaunching: Bool = AWSIdentityManager.defaultIdentityManager().interceptApplication(application, didFinishLaunchingWithOptions: launchOptions)
return didFinishLaunching
}
我已經驗證函數被調用並且正在調用resumeSessionWithCompletionHandler,但完成處理程序永遠不會被觸發,並且我假定該會話未被成功恢復。
僅供參考這裏屬於初始登錄功能以及:
@IBAction func handleFacebookLogin(sender: AnyObject) {
self.handleLoginWithSignInProvider(AWSFacebookSignInProvider.sharedInstance())
}
func handleLoginWithSignInProvider(signInProvider: AWSSignInProvider) {
AWSIdentityManager.defaultIdentityManager().loginWithSignInProvider(signInProvider, completionHandler: {(result: AnyObject?, error: NSError?) -> Void in
// If no error reported by SignInProvider, discard the sign-in view controller.
if error == nil {
dispatch_async(dispatch_get_main_queue(),{
self.dismissViewControllerAnimated(true, completion: nil)
})
}
print("result = \(result), error = \(error)")
})
}
任何想法,爲什麼我能在最初登錄並連接到其他AWS服務,但不能夠在一段時間後恢復會話已經過去了?
您可以分享' - getLoggedInIdentity'的實現和'identity'對象的定義嗎?你如何從SDK獲取Cognito IdentityId? –
我修改了帖子以包含getLoggedInIdentity函數以及執行初始登錄的函數。標識對象是AWSIdentityManager類型的可選項,它是AWSMobileHubHelper框架中的包裝器對象。 – outerstorm
' - userIsLoggedIn'的定義如何?我們需要查看整個登錄流程,以便我們可以嘗試重現您所看到的問題。 –