<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: SwiftyDropbox &amp;quot;unlinkClients&amp;quot; not present in package, can't clear session in Dropbox API Support &amp; Feedback</title>
    <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/247968#M14220</link>
    <description>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.)&lt;BR /&gt;&lt;BR /&gt;Are you seeing this issue on multiple devices? Do you get any error/output in the log when calling DropboxClientsManager.unlinkClients()?</description>
    <pubDate>Thu, 19 Oct 2017 17:47:44 GMT</pubDate>
    <dc:creator>Greg-DB</dc:creator>
    <dc:date>2017-10-19T17:47:44Z</dc:date>
    <item>
      <title>SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/247949#M14216</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've recently noticed that I can't get rid of a session with my ios app. When I&amp;nbsp;call&amp;nbsp; `&lt;SPAN class="s2"&gt;print&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;(&lt;/SPAN&gt;DropboxClientsManager&lt;SPAN class="s1"&gt;.&lt;/SPAN&gt;authorizedClient&lt;SPAN class="s1"&gt;.&lt;/SPAN&gt;&lt;SPAN class="s2"&gt;debugDescription&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;)` even when I call DropboxClientsManager.unlinkClients() from my&amp;nbsp;&lt;/SPAN&gt;applicationWillTerminate it still contains an dropboxClient object. What happens right after the application start when I call `&lt;/P&gt;
&lt;P class="p1"&gt;handleRedirectURL` is that it will skip the login screen and still contains the `SwiftyDropbox.DropboxClient` object and it's not `nil` when I debug.&lt;/P&gt;
&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="p1"&gt;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&amp;nbsp; 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.&amp;nbsp;&lt;/P&gt;
&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="p1"&gt;Thanks for the help in advance.&lt;/P&gt;</description>
      <pubDate>Wed, 29 May 2019 09:18:02 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/247949#M14216</guid>
      <dc:creator>CarolinaK</dc:creator>
      <dc:date>2019-05-29T09:18:02Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/247950#M14217</link>
      <description>&lt;P&gt;I should note that the session still persists even when I uninstall and re-install the app.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also the docs say you should call&amp;nbsp;&lt;SPAN&gt;DropboxClient.unlinkClients but I can't find that on the package code, only&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;DropboxClientsManager&lt;SPAN class="s1"&gt;.&lt;/SPAN&gt;unlinkClients&lt;SPAN class="s1"&gt;()&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;works&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 19 Oct 2017 16:28:50 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/247950#M14217</guid>
      <dc:creator>CarolinaK</dc:creator>
      <dc:date>2017-10-19T16:28:50Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/247968#M14220</link>
      <description>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.)&lt;BR /&gt;&lt;BR /&gt;Are you seeing this issue on multiple devices? Do you get any error/output in the log when calling DropboxClientsManager.unlinkClients()?</description>
      <pubDate>Thu, 19 Oct 2017 17:47:44 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/247968#M14220</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-10-19T17:47:44Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248250#M14241</link>
      <description>&lt;P&gt;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.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Oct 2017 15:19:12 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248250#M14241</guid>
      <dc:creator>CarolinaK</dc:creator>
      <dc:date>2017-10-20T15:19:12Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248282#M14245</link>
      <description>&lt;P&gt;Thanks, since this is only occurring on some devices, there may be something device-specific, or specific to certain instances or versions of your app.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is there anything unusual about how your app is set up with respect to the Keychain? It sounds like perhaps the SDK isn't able to clear the access tokens from the keychain as intended when calling unlinkClients. (That's what I was looking for when asking for error messages.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you can share the relevant code snippets, or ideally a sample project that demonstrates the issue, that would be helpful.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Alternatively, can you try running this earlier than &lt;A href="https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623111-applicationwillterminate" target="_self"&gt;applicationWillTerminate&lt;/A&gt;? From the documentation there:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"Your implementation of this method has approximately five seconds to perform any tasks and return. If the method does not return before time expires, the system may kill the process altogether."&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If that takes a long time to run for some reason, it may not complete in time.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Oct 2017 17:56:09 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248282#M14245</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-10-20T17:56:09Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248818#M14286</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;these are code snippets in AppDelegate.swift containing Dropbox login/logout functionality&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -&amp;gt; Bool {
        UIApplication.shared.isStatusBarHidden = true
        // Setup Drobox app Key
        DropboxClientsManager.setupWithAppKey(dropboxKey)
        return true
    }


    func applicationDidFinishLaunching(_ application: UIApplication) {
       
        if DropboxClientsManager.authorizedClient != nil {
            storyBoard = UIStoryboard(name: Constants.controllerName.mainController, bundle: nil)
            tabBarViewController = storyBoard.instantiateViewController(withIdentifier: Constants.controllerName.tabBar) as! UITabBarController
            tabBarViewController.delegate = self
            window?.rootViewController = tabBarViewController
            switchController(tabBarViewController)
        } else {
            switchController(loginViewController)

        }
    }

    func applicationWillTerminate(_ application: UIApplication) {
        DropboxClientsManager.unlinkClients()
        self.sessionCleanup(entity: "EntityName") 
    }

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -&amp;gt; Bool {
        // Manage Dropbox redirect to Login
        if let authResult = DropboxClientsManager.handleRedirectURL(url) {
            switch authResult {
            case .success:
                print("Info: Success! User is logged into Dropbox.")
                UserDefaults.standard.set(true, forKey: "HasLaunchedOnce")
                UserDefaults.standard.synchronize()
            case .cancel:
                print("Cance: Authorization flow was manually canceled by user!")
            case .error(_, let description):
                print("Error: \(description)")
            }
        }
        return true
    }&lt;/PRE&gt;</description>
      <pubDate>Mon, 23 Oct 2017 15:27:41 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248818#M14286</guid>
      <dc:creator>CarolinaK</dc:creator>
      <dc:date>2017-10-23T15:27:41Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248884#M14291</link>
      <description>&lt;P&gt;I was able to delete everything in the keychain and that worked as well. Right now I'm looking into the github repo for Swifty dropbox and checking if I can just delete the dropbox token explicitly since I really would like to preserve the functionality of logout on app close.&lt;/P&gt;</description>
      <pubDate>Mon, 23 Oct 2017 19:09:22 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248884#M14291</guid>
      <dc:creator>CarolinaK</dc:creator>
      <dc:date>2017-10-23T19:09:22Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248937#M14296</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;for the information! Can you elaborate on what exactly you did to clear the Keychain to get that working though? (This is supposed to be done automatically for you.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can see where this is done in the SDK in the following stack of&amp;nbsp;DropboxClientsManager.unlinkClients -&amp;gt; DropboxOAuthManager.clearStoredAccessTokens - &amp;gt; Keychain.clear:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://github.com/dropbox/SwiftyDropbox/blob/345f460558cd1b1c4faf8c6c5fff80f5809044d1/Source/SwiftyDropbox/Shared/Handwritten/DropboxClientsManager.swift#L149" target="_blank"&gt;https://github.com/dropbox/SwiftyDropbox/blob/345f460558cd1b1c4faf8c6c5fff80f5809044d1/Source/SwiftyDropbox/Shared/Handwritten/DropboxClientsManager.swift#L149&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/dropbox/SwiftyDropbox/blob/345f460558cd1b1c4faf8c6c5fff80f5809044d1/Source/SwiftyDropbox/Shared/Handwritten/OAuth.swift#L260" target="_blank"&gt;https://github.com/dropbox/SwiftyDropbox/blob/345f460558cd1b1c4faf8c6c5fff80f5809044d1/Source/SwiftyDropbox/Shared/Handwritten/OAuth.swift#L260&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/dropbox/SwiftyDropbox/blob/345f460558cd1b1c4faf8c6c5fff80f5809044d1/Source/SwiftyDropbox/Shared/Handwritten/OAuth.swift#L442" target="_blank"&gt;https://github.com/dropbox/SwiftyDropbox/blob/345f460558cd1b1c4faf8c6c5fff80f5809044d1/Source/SwiftyDropbox/Shared/Handwritten/OAuth.swift#L442&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Also, did you get a chance to review the questions in my last reply?&amp;nbsp;E.g., did you try moving the call to see if it's a timing issue?&lt;/P&gt;</description>
      <pubDate>Mon, 23 Oct 2017 21:27:26 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/248937#M14296</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-10-23T21:27:26Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/249085#M14299</link>
      <description>Hi, yes! I tried applicationDidEnterBackground which also has a bit about not going longer than 5 secs: 'Your implementation of this method has approximately five seconds to perform any tasks and return' and it had the same result anyway (no logout).&lt;BR /&gt;&lt;BR /&gt;I implemented a button with a function containing DropboxClientsManager.unlinkClients() and that worked fine too. I'm just a little perplexed why it won't work on the app lifecycle methods.</description>
      <pubDate>Tue, 24 Oct 2017 14:19:48 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/249085#M14299</guid>
      <dc:creator>CarolinaK</dc:creator>
      <dc:date>2017-10-24T14:19:48Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/249087#M14301</link>
      <description>&lt;P&gt;This is what I used to delete all keychains from the app:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;    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))")
    }&lt;/PRE&gt;
&lt;PRE&gt;        deleteAllKeysForSecClass(kSecClassGenericPassword)
        deleteAllKeysForSecClass(kSecClassInternetPassword)
        deleteAllKeysForSecClass(kSecClassCertificate)
        deleteAllKeysForSecClass(kSecClassKey)
        deleteAllKeysForSecClass(kSecClassIdentity)&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 24 Oct 2017 14:22:34 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/249087#M14301</guid>
      <dc:creator>CarolinaK</dc:creator>
      <dc:date>2017-10-24T14:22:34Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/249097#M14303</link>
      <description>Thanks for following up. I'm glad to hear you were able to get this working by running it outside of the app lifecycle methods. This is useful information though so we'll see if we can track down why that doesn't work. Apologies for the trouble!</description>
      <pubDate>Tue, 24 Oct 2017 15:44:12 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/249097#M14303</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2017-10-24T15:44:12Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/249101#M14304</link>
      <description>Thanks Greg!</description>
      <pubDate>Tue, 24 Oct 2017 16:00:14 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/249101#M14304</guid>
      <dc:creator>CarolinaK</dc:creator>
      <dc:date>2017-10-24T16:00:14Z</dc:date>
    </item>
    <item>
      <title>Re: SwiftyDropbox "unlinkClients" not present in package, can't clear session</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/299696#M18200</link>
      <description>&lt;P&gt;Hi @CarolinaK,&lt;/P&gt;&lt;P&gt;Deka here, is it possible to see your work with SwiftyDropbox API?&amp;nbsp; I was wondering if I can have more examples than the PhotoWatch project by Lea Culver. In case you upload it to github, can I have the link?&lt;/P&gt;&lt;P&gt;I'm currently trying to learn SwiftyDropbox API. Thanks so much for your help.&lt;/P&gt;</description>
      <pubDate>Fri, 28 Sep 2018 02:33:24 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/SwiftyDropbox-quot-unlinkClients-quot-not-present-in-package-can/m-p/299696#M18200</guid>
      <dc:creator>Dekamehameha</dc:creator>
      <dc:date>2018-09-28T02:33:24Z</dc:date>
    </item>
  </channel>
</rss>

