0

我正在开发一个类似于谷歌日历的应用程序,用户输入他们的谷歌帐户登录,并从他们的谷歌任务同步。

在不使用 OAuth2 的情况下这可能吗?

4

2 回答 2

2

推广 OAuth 是因为它为 Google 用户提供了保护。想象一下,如果 Google 有一个简单的用户名/密码 API。如果您是恶意站点的创建者,并且您允许用户在您的站点上输入他们的凭据,您可以存储凭据,然后在未经用户同意的情况下为用户执行操作。

你真的应该考虑通过他们的 OAuth2 系统。

如果你真的想绕过这个(并且请不要),你可以求助于发出 HTTP 请求来模拟如果用户直接输入他们的用户名和密码会发生什么,然后使用屏幕抓取来提取数据。显然,这是一种脆弱的方法,而且随着谷歌最近推出的两因素身份验证,这对于选择加入的用户来说是行不通的。

于 2012-10-19T02:35:25.570 回答
1

使用 OAuth 资源所有者密码凭证流,您可以向用户“隐藏”OAuth 流,但前提是您要管理用户的用户名/密码(它们必须作为访问令牌请求的一部分提供)。不幸的是,谷歌似乎不支持这种类型的身份验证流程,我已经与它斗争了几天,但似乎他们的后端缺乏支持。这是 Google API 为 Java 提供的(非功能性)示例:

static void requestAccessToken() throws IOException {
  try {
    ResourceOwnerPasswordCredentialsGrant request =
        new ResourceOwnerPasswordCredentialsGrant(new NetHttpTransport(),
            new JacksonFactory(),
            "https://server.example.com/authorize",
            "s6BhdRkqt3",
            "gX1fBat3bV",
            "johndoe",
            "A3ddj3w");
    AccessTokenResponse response = request.execute();
    System.out.println("Access token: " + response.accessToken);
  } catch (HttpResponseException e) {
    AccessTokenErrorResponse response = e.response.parseAs(AccessTokenErrorResponse.class);
    System.out.println("Error: " + response.error);
  }
}

如果你能让这个东西运行,请告诉我。

于 2012-11-27T18:15:05.523 回答