AccountManager帐户选择器意图

时间:2013-10-09 12:39:19

标签: java android authentication authorization google-authentication

我想使用他的Google帐户验证我的应用用户,因为这是在多个设备上对用户进行身份验证的最简单方法。

我的问题是,如果我使用AccountPicker.newChooseAccountIntent意图并且用户选择了一个帐户,我会在onActivityResult中获得该电子邮件地址,这是否已经由Android验证过,确保用户必须输入正确的帐户密码?

通过这个我想问,是否有可能获得用户无权使用的电子邮件地址。我是否需要进一步检查电子邮件地址以验证它是否属于用户?

我的应用是关于用户的短信,所以我不想让黑客通过选择他们没有密码的帐户来访问这些短信。

2 个答案:

答案 0 :(得分:1)

  

我的问题是,如果我使用AccountPicker.newChooseAccountIntent意图   并且用户选择一个帐户,我将获得它的电子邮件地址   导致onActivityResult,这已经被Android验证了   方式,这确保用户必须输入正确的   帐户的密码?

是的,当然这意味着该帐户已经设置,即用户在某个时刻输入了正确的用户名和密码。

  

通过这个我想问,是否有可能获得一个电子邮件地址   用户没有权利。我是否需要进一步检查   要验证的电子邮件地址,它属于用户?

不,该设备上已设置该电子邮件地址(输入正确的密码),您无需进一步验证。用户是否仍然可以登录该帐户(如果密码已更改),这是未知的。

  

我的应用是关于用户的短信,所以我不想允许   黑客通过选择他们没有的帐户来访问这些   密码。

如果有人设法侵入您的用户的Google帐户,那么就是其他东西,您无法保护您的用户免受此类侵害,他们应该使用安全密码等来保护自己。如果您的用户丢失了他/她的电话,或者它被盗了,他/她可能会更改他们的谷歌密码,但该帐户仍将设置在他们丢失/被盗的手机上;新用户将无法登录GMail,但他将被允许访问您的应用程序。

  

我想用他的Google帐户验证我的应用用户,因为   这是在多个上验证用户的最简单方法   设备

我不会说这是最简单的方法。首先,Android用户可能没有Google帐户,他没有义务拥有一个。其次,您的应用似乎访问互联网,以便拥有一个集中的用户数据库。您确定您的网络应用程序足够安全,以便黑客不会仅使用Google帐户的用户名对其进行身份验证吗?如果您想为您的用户提供服务的网络界面,那么,当然,只有Google用户名是不够的。

这是对你的问题的正确答案,但我不太确定它能解决你的问题。

顺便说一下,问题中提到的所有内容,以及在这个答案中都不称为身份验证。你没有做任何事,你宁愿避免它。

答案 1 :(得分:0)

正在运行的应用可以访问其权限允许的设备上的所有服务和功能。

accountmanager返回的帐户将是手机设置中列出的帐户,并且在您检索此列表时不会执行额外的安全检查。

根据您要使用的服务,可能会指示您输入密码。例如,如果您通过OAuth链接到特定服务,则可能需要输入帐户密码。这实际上取决于您访问的服务。

例如,任何可以访问手机的人都可以使用与您自己的应用程序完全相同的方式打开SMS应用程序。 SMS不会与特定帐户绑定,因为它是SIM卡的功能。