Android:获取与应用内购买相关联的Google Play账户

19

如何获取与应用相关联的Google Play帐户的电子邮件/ID?

我需要这个来向用户显示用于应用内结算的帐户。据我所知,Google应用内结算使用下载应用程序的帐户,但我需要找到一种方法来向用户显示此信息,以防他配置了多个帐户。

这将防止用户抱怨没有识别其购买时,如果他们有另一个与该应用关联的帐户。


当您收到 OnActivityResult 时,可以使用键 com.google.android.finsky.analytics.LoggingContext.KEY_ACCOUNT 获取 Extra,应返回使用的 Gmail 帐户。 - Pierre
3个回答

4
实际上,无法从Google Play获取下载应用程序的帐户。建议创建自己的应用程序用户帐户,并仅在用户注册后允许购买(您可以使用任何想要使用的方法)。
对于每个购买,您需要在后台将其链接到用户的帐户。如果用户使用另一个Google帐户登录到另一台设备上,但是在使用正确的帐户登录到您的应用程序时,将授予访问权限。
Google Play团队已经意识到这不是最佳解决方案,并且正如我在此问题中所评论的那样,我们正在改进API,并且一旦有更新,我也会在这里发布。

3

无法确定用户购买的电子邮件地址。

即使使用账户管理器,也只能返回所有电子邮件的列表。

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
Account[] accounts = AccountManager.get(context).getAccounts();
for (Account account : accounts) {
   if (emailPattern.matcher(account.name).matches()) {
       String possibleEmail = account.name;
       ...
   }
}

这并不像选择列表中的第一个那么简单,因为用户可以使用与手机关联的任何电子邮件进行购买。 您可以使用AbstractAccountAuthenticator#getAccountRemovalAllowed,以了解哪些帐户无法删除,并知道哪个是主要邮箱(因为您无法删除主要邮箱),但即使如此,用户也可以随时更改主要邮箱。
我想知道如何做到这一点,但不幸的是没有方法。在我的情况下,这不是必要的钱,所以我将所有手机电子邮件帐户连接起来作为“有效载荷”发送给自己,所有这些都可以解锁我的应用程序中的高级内容,这样可能会失去一些销售额吗?很有可能,但是我宁愿这样做,也不愿因为我选择了错误的邮件而导致用户购买了高级内容却无法解锁而获得负面评分。

2

我不认为有办法在应用内购买过程中检测用户将要使用的账户。

我唯一能想到的方法是查询帐户管理器(AccountManager),检查用户是否有多个Google账户,并显示一条消息,如:"您拥有多个Google账户,请确保在继续之前使用正确的账户"。这种方法唯一的问题是你需要添加所需的权限才能进行此查询。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接