您必须考虑两种情况:
- 服务器端授权
- Android Account Manager(设备端)授权
案例 1:Google 帐户的服务器端撤销可以在以下位置完成:https ://accounts.google.com/IssuedAuthSubTokens
您只需使用相应的谷歌帐户登录并选择撤销应用程序/网站
案例 2:如果在您的 android 设备上显示类似以下内容的屏幕:“应用程序想要访问您的 Google 帐户....允许/拒绝?”那么这是您需要修改 sqlite3 的客户经理类型授权您手机上的数据库以撤销应用程序(不像案例 1 那样简单,这需要 root 访问您的手机):
一世。首先将数据库和日志文件(accounts.db 和 accounts.db-journal)复制到另一个位置(例如:在您的 SD 卡或计算机上)。可以在您的 android 设备上的此目录中找到数据库文件:
/data/system/users/0/accounts.db
/data/system/users/0/accounts.db-journal
ii. 你现在需要一个 sqlite3 编辑器。我使用了 Google Play 商店中的 Sqlite 调试器。或者,您可以使用来自http://www.sqlite.org/download.html的 sqlite3 二进制文件并在计算机上执行此操作。
iii. 您知道需要使用编辑器删除 accounts.db 数据库的“附加”表中的某些条目。您可能想学习有关 sqlite 命令的快速教程,但这里有一些示例,“Sqlite 调试器”使学习变得容易:
首先在编辑器中打开accounts.db文件
要列出表“附加”中的所有行,您可以使用以下命令:
SELECT * from extras
一个更好的主意是只列出表“附加”中与您要撤销的应用程序相对应的行。例如,如果“com.someapp”是您的应用程序的名称,您可以使用以下命令:
SELECT * from extras WHERE key like '%com.someapp%'
你应该得到一些类似这样的输出:
id|accountsid|key|value
10|1|perm.xxxxxxxxxxxxxxxxxxxxxxxxxxx.oauth2:https://google.com/|1
11|1|EXP:xxxxxxxxxxxxxxxxxxxxxxxxxxxx.oauth2:https://google.com/|xxxxxxx
记下您要从上述输出中删除的 id 编号(即与您要撤消的 App 对应的行),然后使用以下命令删除这些行:
DELETE from extras where _id = 10
DELETE from extras where _id = 11
将数据库和日志文件复制回其原始位置。确保将权限和所有权设置回原来的。仅所有者和组的读/写,所有者和组所有者都是“系统”。此操作将需要 root 访问权限!
重新启动您的设备,您应该已经撤销了该应用程序的权限。您可以通过要求应用再次请求授权来测试这一点。如果您看到要求您授权应用程序的屏幕(“应用程序想要访问您的 Google 帐户....允许/拒绝?),那么您已成功撤销该应用程序。
参考:
- https://groups.google.com/forum/#!topic/android-developers/3lQb83jeyE8
- https://github.com/jberkel/sms-backup-plus/issues/369