我正在尝试制作一个基于 google-fit 的安卓应用。
我想要实现的是,只要用户使用该应用程序选择一个帐户,我就会在我的网站上为用户创建一个帐户。
这是我要构建的代码库(它只是基本的注册示例代码)https://github.com/ishanatmuz/GoogleFitTest/tree/829051b7739ee9d8871c3ba9e5f21dfb17f4f3d7
onConnected当用户成功登录并提供权限时调用。我是calling my own function做进一步的工作,基本上是这样的:
- 获取刚刚登录的用户的信息(至少是电子邮件)。
- 将用户发送到我的服务器进行注册。
- 继续应用的其余部分。
我需要帮助来弄清楚如何执行第 1 步。
任何帮助将不胜感激。
最佳答案
在@Anyonymous2324 的帮助下,我找到了解决方案。除了下面的答案中提到的内容之外,没有什么可做的了。所以我认为这对将来偶然发现这里的人来说是最好的;如果我把它们放在一起。
要获取帐户名(电子邮件)或显示名称(用户名),所需的代码与@Anyonymous2324 提到的相同
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String personName = currentPerson.getDisplayName();
String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);
但要让它发挥作用,还需要做一些事情。
- 转到 Developer's console并为您的项目添加 Google+ API(这是使用任何 Google+ 相关工作所必需的,在我们的例子中是收集用户名)。
- 我们需要通过添加
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
来添加访问设备帐户的权限。到 list 。 - 在你的
GoogleApiClient.Builder
像这样添加 Plus API.addApi(Plus.API)
- 我们还需要添加一些范围,以便
getDisplayName
能行得通。这些是.addScope(Plus.SCOPE_PLUS_LOGIN)
和.addScope(Plus.SCOPE_PLUS_PROFILE)
提到here那getCurrentPerson
方法可以返回 null
如果未指定所需的范围或存在网络故障。因此最好检查 currentPerson
调用前的对象 getDisplayName
在上面。
完整的代码如下所示:
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mClient);
if(currentPerson != null) {
String currentPersonName = currentPerson.getDisplayName();
Log.d(TAG, currentPersonName);
logStatus(currentPersonName);
}
由于文档提到在网络错误的情况下返回值可以为空;添加互联网权限似乎是个好主意。但在我的手机上,它在没有互联网连接的情况下也能正常工作。我猜它是从我手机上的 Google+ 应用程序获取信息,而不是完全上网,所以我不必使用互联网。
但不要相信我的话并测试自己。
关于android - 如何找到用户使用哪个帐户(电子邮件)登录我的基于 google-fit 的 android 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29588756/