android - 将 authToken 用于 Google 健康数据

标签 android google-data-api

我们为 Google Health 开发并发布了一款应用。现在我们想避免每次通过询问用户名和密码登录 gmail 帐户。 为了做到这一点,我听说我可以有以下选择。 1.OAuth 2.客户经理 3.

OAuth 的问题在于它将通过 Android -> Web App -> Health 路径进行,因此我还需要开发一个 Web 应用程序,我们现在不希望这样做。

所以我正在尝试使用客户管理器,这是我的代码,我可以使用它获取所选帐户的帐户列表和有效的 authToken。

AccountManager mgr = AccountManager.get(getApplicationContext()); 
        System.out.println("Got account manager");

        Account[] accts = mgr.getAccounts();
              } 
        Account acct = accts[0];   
        AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(acct, "android", null, this, null, null); 
        Bundle authTokenBundle = accountManagerFuture.getResult();  
        System.out.println("Account name "+accts[0].name);

        String authToken = authTokenBundle.get(AccountManager.KEY_AUTHTOKEN).toString(); 
        System.out.println("Got token:"+authToken);

但现在我对如何使用此 token 访问健康数据感到困惑。 为了获取人口统计提要,我们使用了以下代码,我们在其中明确让用户登录到我们的应用程序。

    String queryURL = "https://www.google.com/health/feeds/profile/ui/" + profileId +"/-/DEMOGRAPHICS";
getDemoGrInfoQuery = new Query(new URL(queryURL));
        Feed dempGrResultFeed;
        globals = new Globals();
    dempGrResultFeed = healthService.query(getDemoGrInfoQuery, Feed.class);

因此我们过去常常使用 URL 获取 Feed。
现在我想跳过登录过程并使用上面的 authToken 来检索提要。如何做到这一点?

任何帮助将不胜感激!!! 提前致谢,

最佳答案

由于标准的 OAuth 程序应该有效,您在 WebView(或任何类似的)中打开带有所有必需参数的 OAuth URL,用户向 Google(而不是您的应用程序)提供他们的用户名和密码,然后 google 提供你是一个可以用于 future 通信的 token 。

这样用户就不必向您提供他们的登录凭据。他们只将它提供给谷歌,而谷歌会为您提供一个 token ,在您每次使用它时都会对您的应用进行身份验证。

我认为您应该接受它,因为它只需要您打开 WebView 一次,除非用户使用您的应用程序注销 google 或拒绝访问您的应用程序。

获得 token 后,您只需开始使用该 token 轮询谷歌,而不会向用户询问他们的登录凭据。非常无缝。

更新

在我们聊天之后,让我告诉你,你必须向谷歌注册一个应用程序,它会给你一个 appID,这个 appID 将被你的 Android 应用程序用来告诉谷歌它正在请求权限代表此 appID 所指的应用程序。

更新 2

  • 使用所有参数打开 Google OAUth,google 会给你一个代码
  • 使用该代码并再次向 google 创建 POST 请求,google 现在将返回一个持久的 AccessToken

然后您可以在以后的所有通信中使用此 AccessToken

关于android - 将 authToken 用于 Google 健康数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5547690/

相关文章:

Android seekbar thumb drawable 显示不正确

Android(Dalvik)成员变量访问性能

python - Google App Engine 找不到 gdata 模块

java - Youtube API 在 Android 上不可能吗?

c# - 如何使用 Google.Apis.YouTube.v3 和 C# 将视频上传到 youtube?

没有互联网的Android map (离线)

java - Listview中的Android复选框自动选择

java - socket.io 和 okhttp3 冲突

c# - 尽管使用 "Namespace Name ",但仍收到错误 "Google.GData.Contacts"联系人“不存在”?

php - 使用 PHP 访问 Picasa Web API