【问题标题】:Using authToken for Google Health Data将 authToken 用于 Google 健康数据
【发布时间】:2011-07-29 16:40:27
【问题描述】:

我们为 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);

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

    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 来检索提要。如何做到这一点?

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

【问题讨论】:

  • 有人可以帮我解决这个问题吗?它非常紧急,我没有得到适当的帮助

标签: android google-data-api


【解决方案1】:

由于标准 OAuth 程序应该可以工作,您在 WebView(或任何类似的)中使用所有必需参数打开 OAuth URL,用户向 Google(不是您的应用程序)提供他们的用户名和密码,然后 google 给出您是一个令牌,可用于您未来的通信。

这样用户就不必向您提供他们的登录凭据。他们只给谷歌,谷歌给你一个令牌,每次你使用它时都会验证你的应用程序。

我认为你应该很好,因为它只要求你打开一个 WebView 一次,除非用户使用你的应用程序退出谷歌或拒绝访问你的应用程序。

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

更新

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

更新 2

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

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

【讨论】:

  • 这些步骤是用所有参数打开谷歌 OAUth,谷歌会给你一个代码 - 使用该代码并再次向谷歌创建一个 POST 请求,谷歌现在将返回一个持久的 AccessToken 你可以然后在您以后的所有通信中使用此 AccessToken
猜你喜欢
  • 1970-01-01
  • 2016-01-20
  • 2017-05-18
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
  • 2018-01-30
  • 2023-01-16
  • 2018-03-09
相关资源
最近更新 更多