3

I am trying to make an android app based on google-fit.

What I am trying to achieve is that I create an account for the user on my website as soon as the user chooses an account using the app.

Here is the code base that I want to build up upon (It is just the basic registration sample code) https://github.com/ishanatmuz/GoogleFitTest/tree/829051b7739ee9d8871c3ba9e5f21dfb17f4f3d7

onConnected is called when the user has succesfully signed in and provided the permissions. I am calling my own function to do further work which is basically this :

  1. Get the information (at least email) of the user who just signed in.
  2. Send the user to my server for registration.
  3. Continue with the rest of the app.

I need help figuring out how to do the step 1.

Any help will be greatly appreciated.

4

2 回答 2

2

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

要获取 accountName(电子邮件)或 Display Name(用户名),所需的代码与 @Anyonymous2324 提到的相同

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

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

  1. 转到开发者控制台并为您的项目添加Google+ API(这是使用任何与 Google+ 相关的工作所必需的,在我们的例子中是收集用户名)。
  2. 我们需要通过添加<uses-permission android:name="android.permission.GET_ACCOUNTS" />到清单中来添加访问设备帐户的权限。
  3. 在您GoogleApiClient.Builder添加这样的 Plus API.addApi(Plus.API)
  4. 我们还需要添加一些范围,这样getDisplayName才能工作。这些是.addScope(Plus.SCOPE_PLUS_LOGIN).addScope(Plus.SCOPE_PLUS_PROFILE)

这里提到,如果没有指定所需的范围或网络故障,该getCurrentPerson方法可以返回。null因此,最好currentPerson在调用对象之前对其进行检查getDisplayName。完整的代码如下所示:

Person currentPerson = Plus.PeopleApi.getCurrentPerson(mClient);
if(currentPerson != null) {
    String currentPersonName = currentPerson.getDisplayName();
    Log.d(TAG, currentPersonName);
    logStatus(currentPersonName);
}

由于文档提到在网络错误的情况下返回值可以为空;添加 INTERNET 权限似乎是个好主意。但在我的手机上,它在没有互联网连接的情况下工作。我猜它是从我手机上的 Google+ 应用程序中获取信息,而不是完全上网,所以我不必使用互联网。

但是不要相信我的话并测试自己。

于 2015-04-13T16:51:32.650 回答
0

在您的onConnected()方法中,您可以通过以下方式获得它:

Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String personName = currentPerson.getDisplayName();
String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);
于 2015-04-12T12:25:37.140 回答