gpt4 book ai didi

Android:在不需要可怕的(用户)权限的情况下获取用户 ID?

转载 作者:IT老高 更新时间:2023-10-28 23:35:02 25 4
gpt4 key购买 nike

为了管理用户偏好,目前我正在获取谷歌用户名(实际上是他们在设备上注册的电子邮件地址)并使用(哈希)作为“用户 ID”来区分不同的用户。类似于所描述的内容here .

这一切都很好,但一些用户(可以理解)被任何似乎赋予该应用一些邪恶力量以浏览其帐户信息或联系人的权限吓跑了。

编辑:这个问题在 Google 现在实现 Permission Groups 的方式上更加严重。在 Android 6 runtime permission架构。他们已将 GET_ACCOUNTS 放入 CONTACTS 权限组。所以现在,为了生成一个唯一的匿名用户 ID,用户必须看到一个对话框,上面写着:

Allow this app to access your contacts? | Deny | Allow |

这有多大的误导性??我的应用不希望访问联系人,但要求用户授予应用访问联系人的权限!是的,有机会通过单独的对话框向用户解释,事实上,不需要访问联系人,但是他们仍然会得到库存系统对话框,要求他们授予访问联系人的权限......自然他们会想“如果不需要访问联系人,为什么要求我授予此权限?”和“我真的信任开发人员吗?他们说不需要访问联系人,但这真的是这样吗?”... 恕我直言,非常非常困惑和非常糟糕的用户体验(以及 others too 的意见)。

我宁愿避免所有这些麻烦和困惑,并在不需要特殊权限的情况下获得唯一的用户 ID。

那么 SDK 中是否有一个常用的函数或方法可以为用户返回一个唯一的用户 ID,而无需任何额外的权限?如果没有,我会感到有点惊讶,因为这似乎是一件很常见的事情……拥有一个用于管理应用用户的用户 ID。

两点:

(a) 我只需要一个匿名用户 ID...我实际上不需要用户的电子邮件地址,也不需要用户的电子邮件地址。所以我不明白为什么 google 不能提供一个返回唯一匿名 ID 的 getUserID() 方法,而无需授予应用程序特殊权限。

(b) 它必须是用户 ID,而不是设备 ID,这样它才能在注册到同一 Google 帐户的所有用户设备上工作。

谢谢。

最佳答案

如果您使用 Google Play 服务,则无需任何额外权限即可获取帐户类型和帐户名称。

首先,在build.gradle中添加如下依赖:

compile 'com.google.android.gms:play-services-auth:8.4.0'

接下来,启动帐户选择器 Intent :

Intent intent = AccountPicker.newChooseAccountIntent(null, null,
new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE},
false, null, null, null, null);

try {
startActivityForResult(intent, REQUEST_CODE_EMAIL);
} catch (ActivityNotFoundException e) {
// This device may not have Google Play Services installed.
// TODO: do something else
}

最后,覆盖 onActivityResult获取帐户类型和帐户名称:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_EMAIL && resultCode == RESULT_OK) {
String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
String accountType = data.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE);
// TODO: do something with the accountName
return;
}
super.onActivityResult(requestCode, resultCode, data);
}

来源:https://stackoverflow.com/a/19444640/1048340

关于Android:在不需要可怕的(用户)权限的情况下获取用户 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33033418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com