通用OAuth - 有可能吗?

时间:2012-08-14 21:19:51

标签: oauth

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

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

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

  • 请求URL,我将我的消费者密钥/密钥对发送到该URL,以便接收新的未经授权的请求令牌。
  • 授权URL,我将用户定向到请求令牌和oauth_callback的查询参数。用户将被重定向到我的网页,登录到外国站点,授予我访问权限,然后被重定向回oauth_callback中指定的URL,其中包含有关他们是否授权我的请求的信息。
  • 我发送授权请求令牌的访问URL,希望获得访问令牌。

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 您需要为所有网站提供应用程序令牌(例如,您的应用程序已向资源所有者注册)。这不是你可以随时做的事情
  2. 来自不同资源所有者的OAuth URL方案不一致。 Twitter拥有与Google不同的OAuth网址结构,与Foursquare不同。在没有硬编码的情况下找出URL是不可能的
  3. 作用域。为许多资源所有者执行OAuth注册时,需要指定范围。你怎么知道范围应该是什么