将authToken用于Google健康数据

时间:2011-04-05 05:40:44

标签: android google-data-api

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

OAuth的问题在于它将通过Android进行 - > Web App - >健康路径所以我需要开发一个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);

因此我们习惯使用网址获取Feed 现在我想跳过登录过程并使用上面的authToken来检索feed。怎么办呢?

任何帮助都会非常感激!!! 提前谢谢,

1 个答案:

答案 0 :(得分:1)

由于标准OAuth程序可行,您可以使用所有必需参数在WebView(或类似内容)中打开OAuth URL,用户使用其用户名和密码向Google(而非您的应用)提供,然后google给出你是一个可用于未来通信的代币。

这样,用户无需向您提供登录凭据。他们只给谷歌,谷歌给你一个令牌,每次你使用它时都会对你的应用进行身份验证。

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

获取令牌后,您只需使用该令牌开始对Google进行投票,并且永远不会要求用户提供其登录凭据。非常无缝。

<强>更新

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

更新2

  • 使用所有参数打开Goog​​le OAUth,Google将为您提供代码
  • 使用该代码并再次向谷歌创建POST请求,谷歌现在将返回持久的AccessToken

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