You might see that the Dropbox Community team have been busy working on some major updates to the Community itself! So, here is some info on what’s changed, what’s staying the same and what you can expect from the Dropbox Community overall.

Forum Discussion

CarolinaK's avatar
CarolinaK
Helpful | Level 6
8 years ago

SwiftyDropbox "unlinkClients" not present in package, can't clear session

Hi,

 

I've recently noticed that I can't get rid of a session with my ios app. When I call  `print(DropboxClientsManager.authorizedClient.debugDescription)` even when I call DropboxClientsManager.unlinkClients() from my applicationWillTerminate it still contains an dropboxClient object. What happens right after the application start when I call `

handleRedirectURL` is that it will skip the login screen and still contains the `SwiftyDropbox.DropboxClient` object and it's not `nil` when I debug.

 

I haven't changed any of the code handling the login and the login/logout functionality worked pretty well a few weeks ago (I was able to see the login screen each time I restarted  the app). Is there something else that I could be missing? I noted that the icloud keychain is disabled at the moment so it couldn't be that. 

 

Thanks for the help in advance.

  • This is what I used to delete all keychains from the app:

     

        func deleteAllKeysForSecClass(_ secClass: CFTypeRef) {
            let dict: [NSString : Any] = [kSecClass : secClass]
            let result = SecItemDelete(dict as CFDictionary)
            assert(result == noErr || result == errSecItemNotFound, "Error deleting keychain data (\(result))")
        }
            deleteAllKeysForSecClass(kSecClassGenericPassword)
            deleteAllKeysForSecClass(kSecClassInternetPassword)
            deleteAllKeysForSecClass(kSecClassCertificate)
            deleteAllKeysForSecClass(kSecClassKey)
            deleteAllKeysForSecClass(kSecClassIdentity)

     

  • CarolinaK's avatar
    CarolinaK
    Helpful | Level 6

    I should note that the session still persists even when I uninstall and re-install the app.

     

    Also the docs say you should call DropboxClient.unlinkClients but I can't find that on the package code, only

            DropboxClientsManager.unlinkClients() 

    works

    • Greg-DB's avatar
      Greg-DB
      Icon for Dropbox Staff rankDropbox Staff
      Thanks for the report. Calling DropboxClientsManager.unlinkClients() should remove the stored access tokens in the keychain and reset the stored authorizedClient, so what you're describing is unexpected. (Also, thanks for the note about the documentation. I'll ask the team to update that to correctly reflect DropboxClientsManager.unlinkClients.)

      Are you seeing this issue on multiple devices? Do you get any error/output in the log when calling DropboxClientsManager.unlinkClients()?
      • CarolinaK's avatar
        CarolinaK
        Helpful | Level 6

        Hi, thanks for the fast reply. I didn't see any errors when I used an iPad (model A1403) , but I tried an iPod (A1421) the login flow works just fine, it goes straight to the login form. Other users have reported this error on a similar iPad and iPad pro. We're all on iOS version 9.3.5. 

         

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,911 PostsLatest Activity: 4 hours ago
333 Following

If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.

For more info on available support options for your Dropbox plan, see this article.

If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!