C# Twitter OAuth没有';我不能正确地重定向回我的网站

C# Twitter OAuth没有';我不能正确地重定向回我的网站,c#,asp.net-mvc-3,oauth,twitter-oauth,twitterizer,C#,Asp.net Mvc 3,Oauth,Twitter Oauth,Twitterizer,免责声明:我还是从MVC3开始(尤其是OAuth)。我可能犯了一个基本的错误 问题 我的控制器发现cookie没有被存储[注意:是的,我正在为不同的讨论使用cookie。让我们接受这个事实,继续前进。]并将我指向Twitter。伟大的然而,当我点击授权时,我会直接回到Twitter的授权页面 我的直觉到目前为止 我的应用程序似乎没有正确处理Twitter回发/回拨到我的页面 配料 ASP.NETMVC3 推特器库 C# 总体思路/逻辑流程 这可能有问题,因为这是我第一次使用MVC3和OAut

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

问题

我的控制器发现cookie没有被存储[注意:是的,我正在为不同的讨论使用cookie。让我们接受这个事实,继续前进。]并将我指向Twitter。伟大的然而,当我点击授权时,我会直接回到Twitter的授权页面

我的直觉到目前为止

我的应用程序似乎没有正确处理Twitter回发/回拨到我的页面

配料

  • ASP.NETMVC3
  • 推特器库
  • C#
总体思路/逻辑流程

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

代码

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


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

我不是100%肯定,因为我不是推特API专业人士。但我认为Twitter不允许本地主机作为回调。这可能是因为他们在允许重定向发生之前进行了URL解析的查找。他们将无法访问.hosts文件中指定的内容

考虑简单地向一个实时URL发出
oauth\u回调
,最好是您自己控制的URL。检查你是否在那里结束。然后,您可以了解如何获得oauth_令牌和oauth_验证器。(专业提示:抓取URL,或者如果可以的话,让页面在屏幕上打印变量,以便抓取)

同时测试指定“oob”作为回调,看看会发生什么

编辑
我刚刚意识到,由于您正在做一个web应用程序,所以删除URL是行不通的。很抱歉但是,让一个实时URL获取oauth_令牌和oauth_验证器,然后从该页面重定向到localhost或其他什么怎么样?

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

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


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

您在twitter应用程序中指定了回调还是在授权过程中指定了oauth_回调?感谢您的响应!我尝试了两种方法,将两种方法的设置设置相同。因为我试图重定向到我的本地主机,所以我使用了。然后,我尝试指定xyz.com:[port]/Home/connecttowitter,然后在主机文件中设置xyz.com以重定向到本地主机。是否有更好的非生产测试方法?这可能就是问题所在。嗯,第一个原因是该网站纯粹处于开发阶段,我没有可以放置实时页面的主机我想我会继续,但是我很惊讶Twitter没有帮助那些在开发环境中进行测试的人。我明白你的问题。我找到了这个页面:。Twitter不允许您注册本地主机回调url,但允许您在运行时覆盖注册的url。此外,Twitterizer要求开发人员覆盖已注册的回调url。没有它,Twitter就不会为回调提供验证程序。嗨,瑞奇,谢谢!看起来在特定回调覆盖中提供localhost(127.0.0.1)也不起作用。然而,当我指定注册URL和覆盖外部网站的URL时,我确实得到了重定向(将其指向博客网站只是为了检查)。只是为了更新和编辑:这个答案是正确的——Twitter不允许本地主机。认识到这一点后,我能够进行一些重构,并且在生产中运行平稳。谢谢嗨,瑞奇,考虑到你的评论和探索,我现在看到twitter做了一个重定向。鉴于此,它应该是对MVC控制器的GET请求,因此不需要另一个[httpPost]控制器。我最初添加额外的控制器是出于twitter不允许本地主机回调引起的混乱。非常感谢。