【问题标题】:Why do I get "caller uid xxxxx is different than the authenticator's uid" when accessing another app's account information?为什么我在访问其他应用的帐户信息时会收到“caller uid xxxxx is different than the authenticationator's uid”?
【发布时间】:2012-03-08 04:55:33
【问题描述】:

我编写了一个应用程序 A,它使用 AccountManager 进行登录处理。然后,我编写了另一个应用程序 B,它使用 A 的 AccountManager 帐户数据。

但是当我运行 B 时,我得到“java.lang.SecurityException: caller uid xxxx is different than the authenticationator's uid”。

用 A 的密钥库文件给 B 签名解决了这个问题。

但是,我仍然想知道为什么会发生这种情况以及是否有替代解决方案。

【问题讨论】:

    标签: android accountmanager


    【解决方案1】:

    此消息具有高度误导性。如果您的 uid 或签名与具有 Account Authenticator 的应用程序相同,则您只能访问其他帐户信息。没有其他解决方案。他们会很好地改变信息。

    这是一项重要的安全预防措施。如果没有这个,任何应用程序都可以读取任何其他人的用户数据。这可能包含有意义的信息。

    来源:阅读代码

    【讨论】:

    • 嗯,“没有其他解决方案”并不完全正确。正如Account Manager: Using other accounts 文章中所述,应用程序可以使用 OAuth 来使用其身份验证器由其他应用程序提供的帐户。但是,这需要用户重新输入一次密码。另请参阅有关如何Write your own Android Authenticator 的相关博客文章。
    • 那要看他在说什么了。我以为他在谈论获取用户数据,除了我上面列出的方法之外别无他法。但是,要获得令牌,用户可以批准它并且其他应用可以访问它。
    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多