2010-05-30 112 views
7

我试图让我的ASP.NET网站上的Twitter身份验证工作。在Twitter网站上创建应用程序时,必须指定一个回调URL,为了说明起见,我已将其设置为http://mydomain.comTwitter oauth_callback参数被忽略!

我已阅读oAuth 1.0a规范,并覆盖此回调URL你自己定制的,你必须在request_token阶段发送oauth_callback参数(当然是url编码)。

所以我的请求的URL看起来像这样:

http://twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2Fmydomain.com%2Ftwittercallback

据称,如果一切按计划进行,在你的响应数据,你应该得到的oauth_callback_confirmed = true一个新的参数除了你令牌和令牌秘密参数。

然而,我的反应来通过为: 的oauth_token =设为MyToken & oauth_token_secret = MYTOKENSECRET

我知道我没有给你们最走量的,但是我在我无计可施,以为什么我没有收到oauth_callback_confirmed参数。如果没有这个,我的应用程序会保持默认返回到Twitter网站上硬编码的回调URL。如果有人能帮助我,我会永远感激!

感谢, A.

+0

我添加了一个twitterapi标签。 – amelvin 2010-05-30 22:57:20

回答

0

我用this guide设置我的电脑用作回调位置。基本上,你以某种方式设置你的主机文件,清除你的缓存并添加一些Firefox注册表值。最后,当您正在调试oauth调用时,重定向会返回到您的本地PC。

正如我所说,它为我工作。

8

我读过的OAuth 1.0a的规范,并 覆盖这个回调网址与你的 自己定制一个你要发送的 request_token阶段 oauth_callback参数(URL编码 当然) 。

所以我的请求的URL看起来像这样:

http://twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2Fmydomain.com%2Ftwittercallback

只是因为你读的规格并不意味着TWITTER阅读。 :P

开玩笑 - 这是基本上是正确的 - 但Twitter的方式喜欢收到此数据是有点不同的(而不是有据可查)。

我发现让oauth_callback确认方法如下:在请求函数的参数指定oauth_callback,而不是URL中。 (使用的oauth2)

Python的例子:

''' Create our client.''' 

client = oauth.Client(consumer) 

''' do the request ''' 

resp, content = client.request(request_token_url,"POST",body=urllib.urlencode({'oauth_callback':callbackURL})) 


''' note that it's called "body" in this particular OAuth function for Client but in OAuth Request object it's called "parameters." YMMV depending on programming language/ library of course. ''' 

这也是我已经成功地取得OAuth验证的唯一途径。据推测,不应该每次都指定回调URL,因为我们在应用设置中提供了它......但是体验似乎表明了其他方面。

最后,请注意,在第3阶段,您必须再次做同样的事情 - 这次包括oauth_verifier以及参数中的回调URL。

希望这会有所帮助 - 无法开始告诉你,我花费了多少努力来解决这个问题。

祝你好运!

Ĵ

1
<?php 
    // oauth-php example 
    $token = OAuthRequester::requestRequestToken(
       $consumer_key, 
       $user_id, 
       array('oauth_callback'=> urlencode($callback_uri)) 
      ); 
?>