如何在Android应用程序中使用Google帐户

时间:2013-03-15 10:07:07

标签: android authentication accountmanager

我想开发一个Android应用程序,允许用户使用他们的Google帐户登录(我认为它始终是一个电子邮件地址),而不是强迫用户创建一个新的。我有3个问题:

  • 当用户第一次启动应用程序时,我将不得不使用AccountManager,对吧?如果用户只有一个com.google帐户,我将使用该帐户,如果没有,我会问他想要使用哪个帐户。我的问题是,我可以确定AccountManager中的每个com.google帐户都经过了正确的身份验证,并且应用程序可以确定该用户是他所说的人,这样我就不必让他选择帐户每次应用程序启动时?

  • 该应用程序将有一个服务器,它将在数据库中存储用户已解锁的受限内容,这就是为什么它需要Google帐户,以将用户的外键与内容的外键匹配知道该用户已解锁的内容。您如何建议我将Google帐户作为用户表的主键保存在数据库中?我可以存储Google帐户的电子邮件,但是没有任何隐私问题吗?我还能用什么?我认为Google帐户没有类似Facebook ID的整数值。

  • 我是否需要使用OpenID或oAuth 2.0进行上述任何操作?我问这个是因为当应用程序没有互联网连接时,我希望用户仍然能够访问他解锁并先前下载到手机中的受限内容。如果我使用需要互联网连接的OpenID吗?所以用户不应该进入应用程序,这不是我想要的。

由于

1 个答案:

答案 0 :(得分:1)

使用客户经理检查手机上可用的帐户,并询问用户他想要使用哪个帐户听起来不错。我认为使用OAuth 2.0并在客户端应用程序中获取userinfo的OAuth 2.0访问令牌是个好主意(https://www.googleapis.com/auth/userinfo.profile可能是您要使用的范围)并在此时将其发送到您的服务器客户端与服务器通信。然后使用userinfo Google API您的服务器可以使用访问令牌来确保用户是他声称的用户。使用此API,您可以获取可以使用的用户ID,而不是用户的电子邮件。

获取身份验证令牌需要访问互联网,但由于只有在与自己的服务器通信时才需要,因此您可以在此时获取令牌。

我不是100%确定AccountManager提供的帐户是否可以信任,但它会为您提供手机上提供的Google帐户,我不知道如何在手机中添加帐户无法访问该帐户。如果这是可能的,那么这也是一个非常大的安全问题,所以我认为您可以相信AccountManager提供的帐户是真实的。

当您在客户端上获得OAuth 2.0令牌时,如果可能,我建议您使用Google Play的GoogleAuthUtil而不是客户经理。有关详细信息,请参阅:In a nutshell what's the difference from using OAuth2 request getAuthToken and getToken