【问题标题】:Twitter OAuth doesn't redirect back to my web site properlyTwitter OAuth 没有正确重定向回我的网站
【发布时间】:2011-10-31 11:43:04
【问题描述】:

免责声明:我仍然从 MVC3(尤其是 OAuth)开始。我可能犯了一个基本错误。

问题

我的控制器发现 cookie 没有被存储 [注意:是的,我在不同的讨论中使用 cookie。让我们接受这一点并继续前进。] 并引导我访问 Twitter。伟大的。但是,当我点击授权时,我会直接回到 Twitter 的授权页面。

我的预感

我的应用似乎没有正确处理 Twitter 回发/回调到我的页面。

成分

  • ASP.NET MVC 3
  • Twitterizer 库
  • C#

总体思路/逻辑流程

这可能存在问题,因为这是我第一次使用 MVC3 和 OAuth。

http://i56.tinypic.com/2rxchw7.png

守则

一开始我很犹豫是否要发布它,因为我想确保我对它应该如何流动的看法是正确的,并且可以理解的是它有一点需要挖掘。

提前感谢您提供的任何帮助!

【问题讨论】:

  • 您是否在您的推特应用程序中指定了回调,或者您是否在授权过程中指定了 oauth_callback?
  • 感谢您的回复!我都试过了,两者的设置都一样。因为我试图重定向到我的本地主机,所以我使用了127.0.0.1:[port]/Home/ConnectToTwitter。然后我尝试指定 xyz.com:[port]/Home/ConnectToTwitter 然后在我的主机文件中设置 xyz.com 以重定向到本地主机。有没有更好的非生产测试方法?这可能是问题所在。

标签: c# asp.net-mvc-3 oauth twitter-oauth twitterizer


【解决方案1】:

我不是 100% 确定,因为我不是 Twitter API 专业人士。但我认为 Twitter 不允许 localhost 作为回调。并且可能是他们在允许重定向发生之前执行 URL 解析的查找。他们将无法访问您的 .hosts 文件中指定的内容。

考虑简单地将oauth_callback 发送到实时 URL,最好是您自己控制的 URL。检查你是否最终到达那里。然后你可以弄清楚如何获取 oauth_token 和 oauth_verifier。 (专业提示:抓取 URL,或者如果可以,让页面在屏幕上打印变量以便于抓取)。

还测试将“oob”指定为回调,看看会发生什么。

编辑: 我刚刚意识到抓取 URL 是行不通的,因为您正在做一个 Web 应用程序。对不起。但是如何让一个实时 URL 获取 oauth_token 和 oauth_verifier 并从该页面重定向到 localhost 或其他什么?

【讨论】:

  • 嗯,第一个原因是该站点纯粹是在开发中,我没有可以放置实时页面的主机。 :) 我想我会继续说下去,但我很惊讶 Twitter 并没有帮助那些在开发环境中进行测试的人。
  • 我看到了你的问题。我找到了这个页面:tonyamoyal.com/2009/08/17/…。也许这会奏效。
  • Twitter 不允许您注册 localhost 回调 url,但允许您在运行时覆盖注册的 url。此外,Twitterizer 要求开发者覆盖注册的回调 url。没有它,Twitter 不会为回调提供验证器。
  • 嗨瑞奇,谢谢!看起来好像在特定的回调覆盖中提供 localhost (127.0.0.1) 也不起作用。但是,当我将注册 URL 和覆盖 URL 都指定到外部网站时,我确实得到了重定向(将其指向博客网站只是为了检查)。
  • 只是为了更新和编辑:这个答案是正确的——Twitter 不允许本地主机。意识到这一点后,我能够进行一些重构,并且在生产中运行顺利。谢谢!
【解决方案2】:

如果我正确阅读了您的流程图,您可能误解了部分 oauth 流程。当我按照图表进行操作时,就好像这是用户第一次访问(没有 cookie,没有令牌/验证器),您在 twitter 交互后有一个 POST。永远不会有POST。 Twitter 的服务器不执行回调。用户将被重定向(HTTP 302)到回调 url,并在查询字符串中附加了令牌和验证器。

此外,根据您是否提供了验证程序或令牌,有不同的行为似乎很奇怪。如果你做对了,你永远不会有一个没有另一个,即使你做错了,你也永远不会有一个没有令牌的验证者。

您在什么时候调用 GetAccessToken 方法?

【讨论】:

  • 嗨 Ricky,鉴于您的 cmets 和探索,我现在看到 twitter 进行了重定向。鉴于此,它应该是对 MVC 控制器的 GET 请求,因此不需要另一个 [httpPost] 控制器。我最初添加了额外的控制器是出于 twitter 不允许 localhost 回调引起的混乱。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
  • 2011-07-03
  • 1970-01-01
  • 2021-02-10
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多