2011-08-21 100 views
3

免责声明:我仍然从MVC3开始(特别是OAuth)。我可能会犯一个基本的错误。Twitter OAuth没有正确重定向到我的网站

的问题

我的控制器看到该Cookie不会存储[注:每一个不同的讨论,是的,我使用的cookies。让我们接受并继续。]并指引我到Twitter。大。但是,当我点击授权时,我马上回到Twitter的授权页面。

我的预感到目前为止

看来,我的应用程序不能正确处理Twitter的回发/回调到我的网页。

成分

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

总体思路/逻辑流程

有可能是一个问题 与此,因为这是我第一次与MVC3和OAuth全面。

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

守则

我犹豫不决,在第一,因为我想确保我的这个应该如何流动的看法是正确的,并张贴,因为有可以理解的一点点它挖掘。

在此先感谢您的帮助!

+0

您是否在您的Twitter应用程序中指定了回调,或者您是否在授权过程中指定了oauth_callback? –

+0

感谢您的回复!我已经尝试了两种,将两者的设置设置为相同。因为我试图重定向到本地主机,所以我使用了http://127.0.0.1:[port]/Home/ConnectToTwitter。然后我尝试指定xyz.com:[port]/Home/ConnectToTwitter,然后在我的主机文件中设置xyz.com以重定向到本地主机。有没有更好的非生产测试方法?这可能是问题。 – SeanKilleen

回答

0

我不是100%确定,因为我不是Twitter API专家。但我认为Twitter不允许本地主机作为回调。也可能是他们在允许重定向发生之前进行URL解析。他们无法达到.hosts文件中指定的内容。

请考虑简单地将oauth_callback发布到实时网址,最好由您自己控制。检查你最终在那里。然后你可以研究如何获得oauth_token和oauth_verifier。 (pro-tip:抓取网址,或者如果可以的话,让页面在屏幕上打印变量以便于抓取)。

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

编辑: 我刚刚意识到,抓取URL不会工作,因为你正在做一个Web应用程序。抱歉。但是如何让一个实时URL使用oauth_token和oauth_verifier并从该页面重定向到本地主机或其他?

+0

那么,第一个原因是,该网站纯粹是在发展,我没有托管的活页面。 :)猜猜我会继续这样做,但我很惊讶Twitter不会帮助那些在开发环境中进行测试的人。 – SeanKilleen

+0

我看到你的问题。我发现这个网页:http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local-machine /。也许这将起作用。 –

+1

Twitter不允许您注册本地主机回叫网址,但允许您在运行时覆盖注册的网址。此外,Twitterizer要求开发人员覆盖注册的回调网址。没有它,Twitter不会为回调提供验证者。 –

0

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

此外,具有不同的行为似乎很奇怪,具体取决于您是否提供了验证者或令牌。如果你做得对,你就不会有没有另一个,即使你做错了,你永远不会有一个没有令牌的验证者。

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

+0

嗨Ricky,考虑到你的意见和探索,我现在看到Twitter做了重定向。鉴于此,它应该是对MVC控制器的GET请求,因此不需要另一个[httpPost]控制器。我最初添加了额外的控制器出来的混乱,从twitter不允许本地主机回调。谢谢! – SeanKilleen