我们想要实现的目标:跨app单点登录
我们有2个应用程序(应用程序A和应用程序B),我们希望共享相同的用户帐户.也就是说,当用户登录到应用程序A时,他们将自动登录应用程序B,反之亦然.
我们所做的
我们创建了一个自定义身份验证器(扩展AbstractAccountAuthenticator等)以从我们的服务中检索身份验证令牌,以确保用户登录到我们的应用程序.
我们将验证者拉到了两个不同的应用程序(应用程序A和应用程序B),我们想要共享帐户.
我们安装了应用程序A并登录.然后我们安装了应用程序B,并看到我们已自动登录.是的!
但是,当我们卸载应用程序A(我们安装的第一个应用程序)时,我们看到以下消息:
03-20 16:43:27.057 862-862/? W/AccountManagerService: deleting account username@blah.com because type com.example.app.a's registered authenticator no longer exist.
并且看到我们已经退出应用程序B,帐户已从帐户中消失.
问题是:唯一注册的帐户验证者是否是第一个安装的验证者?如果卸载了应用A,是否无法回退到应用B中的帐户身份验证器?
(fyi:我们已经看到设置sharedUserId解决了这个问题,但我们的应用程序目前正在运行,因此更改其userId不是一个选项)