0

我正在尝试构建一个应用程序,用户可以在其中指定网站的 URL,我的页面将转到该 URL 并获取信息。如果 URL 需要用户身份验证才能访问信息,那么我想使用 OAuth 1.0 来做到这一点。

问题是,我在 OAuth 教程中看到了这一点,据我所知,我的应用程序必须已经以某种方式注册到我从中请求信息的页面。我的理解是,对于我希望我的用户能够使用的任何页面,我必须自己单独访问该页面并注册我的应用程序。完成后,它会给我一个消费者密钥和秘密,我将它们硬编码到我的页面中,然后在我访问请求 URL、授权 URL 和访问 URL 时使用它们。当然,这对我没有好处,因为我希望我的用户能够指定任意页面来访问信息,然后向这些页面提供他们的凭据,以便让我的应用程序访问它们的信息。

此外,据我所知,我需要知道三个 URL:

  • 请求 URL,我将消费者密钥/秘密对发送到该 URL,以便接收新的未经授权的请求令牌。
  • 授权 URL,我使用请求令牌和 oauth_callback 的查询参数引导用户访问。用户将被重定向出我的网页,登录到外部站点,授予我访问权限,然后被重定向回 oauth_callback 中指定的 URL,并提供有关他们是否授权我的请求的信息。
  • 我将授权请求令牌发送到的访问 URL,期望获得访问令牌作为回报。

然后,一旦我拥有了所有这些,我就可以使用访问密钥/秘密对作为用户名和密码。我将它们存储在与用户相关的 cookie 中,并在以后访问网站上的信息时使用它们。在网站的交易结束时,它会在我的请求中查找该信息,如果我正确地包含它,那么我将被允许访问我喜欢的任何用户数据。

我正在尝试做的事情 - 提供对网站的通用 OAuth 访问权限 - 可能吗,还是需要我作为应用程序所有者向服务器注册我的应用程序才能获得对它的 OAuth 访问权限?如果可能,那么我如何获取请求 URL、授权 URL 和访问 URL?

4

1 回答 1

1

这真的不可能。以下是您将遇到的问题的简短列表:

  1. 您需要为所有网站提供应用程序令牌(例如,您的应用程序向资源所有者注册)。这不是你可以即时做的事情
  2. 来自不同资源所有者的 OAuth URL 方案不一致。Twitter 的 OAuth URL 结构与 Google 的不同,而 Google 的 URL 结构与 Foursquare 不同。如果不对其进行硬编码,实际上不可能找出 URL
  3. 范围。当您为许多资源所有者进行 OAuth 注册时,您需要指定一个范围。你怎么知道范围应该是什么
于 2012-08-14T21:42:20.380 回答