5

我有一个完全离线工作的私人应用程序(即没有发送/接收服务器数据),但是我需要将其限制为仅在手机上拥有有效 Google 帐户的用户。我可以通过迭代电话帐户列表来确保电话上有一个合适的帐户,但是是否可以检查帐户是否有效/经过身份验证而无需引入完整的 OAuth 流程?我不需要获取 cookie 或将任何数据发送到服务器。

理想情况下,我想做类似的事情: 1. 与客户经理核实身份验证令牌。2. 如果收到令牌,则允许访问该应用程序。目前,无需通过客户经理进行任何检查,任何人都可以在电话上创建一个虚假帐户,然后即使他们输入了电子邮件/密码并且永远不会获得授权,也可以访问。

我希望我已经清楚地解释了这一点。由于我的应用程序没有网络连接,所以我想避免添加我自己的任何网络/oauth 检查。

4

2 回答 2

5

那这个呢:

AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
final boolean connected = accounts != null && accounts.length > 0;

连接的布尔值将指示手机中是否有连接的 Google 帐户。

确实不会对令牌进行任何检查,但如果该帐户是在手机上注册的,那么谷歌之前会在服务器端检查它以验证它......

于 2014-04-10T14:31:43.847 回答
2

实现 Google Plus 登录 API 怎么样?它并没有真正建立一个完整的 OAuth 流程,因为 G+ 它相当简单,即使它实际上是建立在 OAuth 之上的。

我在我正在开发的一个不需要在线访问的应用程序中使用它(初始 G+ ​​登录访问权限除外)。

我所做的是第一次运行应用程序时,我会显示 G+ 登录按钮。用户点击它后,他可以接受来自我的应用程序的权限请求(以便能够检索用户电子邮件和一些基本的个人资料信息,即所需的最低权限),如果 API 客户端连接正确,那么我会向用户展示仪表板或主页屏幕并在 SharedPreferences 中设置一个关于用户已被授权的标志。

这样,下次用户启动应用程序时,它会记住它已经被授权,只需请求 API 客户端连接(只有当从帐户的 Play 商店网站撤销访问权限时,我们才需要重新验证用户auth 仍然有效),一切都应该工作。如果用户从我的应用程序中撤销对其 G+ 个人资料的访问权限,我会清除该标志,以便用户下次运行它时再次请求授权。

它实际上非常简单,至少对于我的用例(这听起来与您的非常相似)它适用于我想要的,并且对用户的干扰最小。

我强烈建议你试试这个Google Plus 登录教程

编辑:您还可以查看我之前提出的这个问题,关于处理需要 Google Plus 功能的多项活动

另外,忘了说使用这种方法,您始终可以确保用户帐户始终有效,因为您直接与 Google 的服务器检查其有效性。

于 2014-04-14T15:30:12.707 回答