android - 如何找到用户使用哪个帐户(电子邮件)登录我的基于 google-fit 的 android 应用程序?

标签 android google-fit google-fit-sdk user-identification

我正在尝试制作一个基于 google-fit 的安卓应用。

我想要实现的是,只要用户使用该应用程序选择一个帐户,我就会在我的网站上为用户创建一个帐户。

这是我要构建的代码库(它只是基本的注册示例代码)https://github.com/ishanatmuz/GoogleFitTest/tree/829051b7739ee9d8871c3ba9e5f21dfb17f4f3d7

onConnected当用户成功登录并提供权限时调用。我是calling my own function做进一步的工作,基本上是这样的:

  1. 获取刚刚登录的用户的信息(至少是电子邮件)。
  2. 将用户发送到我的服务器进行注册。
  3. 继续应用的其余部分。

我需要帮助来弄清楚如何执行第 1 步。

任何帮助将不胜感激。

最佳答案

在@Anyonymous2324 的帮助下,我找到了解决方案。除了下面的答案中提到的内容之外,没有什么可做的了。所以我认为这对将来偶然发现这里的人来说是最好的;如果我把它们放在一起。

要获取帐户名(电子邮件)或显示名称(用户名),所需的代码与@Anyonymous2324 提到的相同

Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String personName = currentPerson.getDisplayName();
String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);

但要让它发挥作用,还需要做一些事情。

  1. 转到 Developer's console并为您的项目添加 Google+ API(这是使用任何 Google+ 相关工作所必需的,在我们的例子中是收集用户名)。
  2. 我们需要通过添加 <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 来添加访问设备帐户的权限。到 list 。
  3. 在你的GoogleApiClient.Builder像这样添加 Plus API .addApi(Plus.API)
  4. 我们还需要添加一些范围,以便 getDisplayName能行得通。这些是 .addScope(Plus.SCOPE_PLUS_LOGIN).addScope(Plus.SCOPE_PLUS_PROFILE)

提到heregetCurrentPerson方法可以返回 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/

相关文章:

android - Google Fit Android API 中的手动数据标志?

android - 哪个线程调用 `onCreateLoader()` 和 `onLoadFinished()`?

android - Google Fit API : ApiException 17 (Fitness. 客户端在此设备上不可用)

android - Google Fit O Auth 失败并显示 RESULT_CANCELED,未显示权限页面

Android Wear 访问 Google Fit API

google-fit - 如何从Google Fit中的事件代码获取事件名称

android - 谷歌健身 : Dealing with TransactionTooLargeException without feedback

java - 从 Eclipse 的 CMD 访问 sqlite 表

java - 查找字符串数组列表之间的共同点

android - 如何通过单击和更改按钮功能在另一个布局中加载布局?