Summary: | Changing Google password results in no access | ||
---|---|---|---|
Product: | [Frameworks and Libraries] libkgapi | Reporter: | Ovidiu-Florin BOGDAN <kde.kfoar> |
Component: | General | Assignee: | Daniel Vrátil <dvratil> |
Status: | REPORTED --- | ||
Severity: | normal | CC: | auxsvr, brendon, dvratil, ephemient, kishore96 |
Priority: | NOR | ||
Version: | GIT | ||
Target Milestone: | --- | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Ovidiu-Florin BOGDAN
2019-01-07 14:41:21 UTC
I think I have a suspicion as to what happens, but I have not confirmed it and haven't checked the code either, so this is just an educated guess: When you change account password Google likely expires both the Access token and the Refresh token - the code may not be ready to handle invalid Refresh token and just keeps trying to get a new Access token using the - now invalid - Refresh token instead of throwing both away and showing the Google login dialog to receive a new pair. A workaround from Daniel Vrátil: * Open KWallet * find the LibKGAPI entry * under Mappings you have a "apps.googleusercontent.com entry"; select it * in the right pane you'll see an entry for your Google accounts * remove the entry for the account that you want to trigger the login again * exit KMail (Kontact) * stop akonadi (from a terminal, run: akonadictl stop) * start KMail * you should be prompted for a login for that account * if you are not prompted, check if the account is in "(Disconnected)" state in the directories list and if so, trigger an update on the root directory for the account in question. The workaround worked for me only after I noticed that I also had to click the "Save" button after deleting the entry in KWalletManager (whoops). I did also want to point out that the "user rejected access to the wallet" error message is *highly* misleading and confusing in this situation. I was scratching my head for a couple of hours on that one until I managed to see Akonadi's console output say org.kde.kgapi: Bad request, Google replied ' "{\n \"error\": \"invalid_grant\",\n \"error_description\": \"Token has been expired or revoked.\"\n}" ' I would suggest (as this case shows) that an error below the wallet subsystem does not necessarily imply any choice or action on the user's part. So that error message could be phrased better (or there could be more fidelity in the error responses flowed back up the stack)... |