5

我知道必须有一个明显的解决方案来解决这个问题,但我很想念它,所以我非常感谢有人启发我,所以我不会转动我的轮子......

我正在编写一个 ASP.Net 应用程序,它将与服务 API(特别是 Evernote)进行交互。Evernote 需要 OAuth 以确保安全,在我实际与需要获取令牌的对象交互之前。

工作流程是这样的(像其他人一样向自己解释!):

  1. 使用我的开发 api 密钥和密钥以及其他一些 OAuth 内容构建一个 url,将其发送到 Evernote 以请求访问令牌。
  2. 将 url 作为请求发送到 Evernote,并从响应中提取新的访问令牌
  3. 使用访问令牌构建另一个 url 以请求用户的身份验证令牌。此 url 转到用户必须与之交互才能登录的页面(如果他们尚未登录),然后授权我的应用程序访问他们的帐户。我构建的 url 的最后一个参数是一个回调 url,它将从 Evernote 的服务器中调用。
  4. 如果一切顺利,Evernote 将请求回调 url 并包含新的身份验证令牌作为参数。
  5. 一旦我的服务器收到带有嵌入令牌的回调,我就可以使用它,以便我的应用程序可以与用户在后续请求中的注释进行交互。

问题是我在本地机器上编写这个应用程序,而不是公共域下的 ISP。所以我的回调是本地主机服务器。当然,localhost 是相对的,所以 Evernote 无法解析我的回调……我无法同时接收到身份验证令牌并进行调试。

必须有解决这个问题的方法,因为这种身份验证模型不是 Evernote 独有的(从长远来看……Flickr 使用它,就像许多其他服务一样)。那么有人可以告诉我如何设置,以便我可以获得身份验证令牌并仍然能够在我的本地机器上进行调试吗?

非常感谢您的帮助!

4

2 回答 2

2

OAuth 很难实现。这可能不是您要寻找的答案,但这就是我设法完成工作的方式:

  1. 在我的本地开发机器上写一些代码。
  2. 运行一个执行 msbuild 部署脚本并将应用程序部署到测试服务器的 bat 文件(或者挂钩 VS 中的构建后事件)。
  3. 在测试服务器上运行应用程序。在获取请求令牌并请求授权后,它会重定向到 Evernote 网站。
  4. 成功授权后,Evernote 网站重定向回我的测试服务器,并且授权的请求令牌被交换为访问令牌。
  5. 我不是调试(我在测试服务器上没有 VS),而是检查应用程序的日志(我使用的日志记录就像写入文本文件一样简单)。
  6. 冲洗并重复

出于测试目的,我注册了一个临时公共子域(例如 testing.oauth.mydomain.com),以便 Evernote 能够重定向到该 URL。

于 2008-12-07T12:34:09.263 回答
0

根据this(我如何在本地针对OAuth进行开发?)回调是由浏览器发出的,所以它应该能够访问本地主机。

于 2009-04-05T16:18:24.920 回答