Twitter oauth_callback参数被忽略!

时间:2010-05-30 22:08:28

标签: url callback oauth twitter

我正在尝试在我的ASP.NET站点上运行Twitter身份验证。当您在Twitter网站上创建应用程序时,您必须指定一个回调URL,为了参数,我已将其设置为http://mydomain.com

我已阅读oAuth 1.0a规范,并使用您自己的自定义覆盖此回调网址,您必须在request_token阶段发送oauth_callback参数(当然是url-encoded)。

所以我的请求网址如下:

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。如果有人能帮助我,我将永远感激不尽!

谢谢, 甲

3 个答案:

答案 0 :(得分:9)

  

我已经阅读了oAuth 1.0a规范,以及   用您的。覆盖此回调网址   自己定制的,你必须发送   oauth_callback参数中   request_token阶段(url编码的   疗程)。

     

所以我的请求网址如下:

     

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

只是因为您阅读规范并不意味着TWITTER会阅读它。 :P

开玩笑 - 这基本上是正确的 - 但是Twitter喜欢接收这些数据的方式有点不同(并没有很好地记录)。

我发现获得oauth_callback确认的方式如下:在请求函数的参数中指定oauth_callback,而不是在URL中。

python示例(使用oauth2):

''' 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 验证者的唯一方法。据说每次都不应该指定回调网址,因为我们在应用程序设置中提供它...但是经验似乎表明不是这样。

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

希望这会有所帮助 - 无法开始告诉你我在努力解决这个方面付出了多少努力。

祝你好运!

Ĵ

答案 1 :(得分:1)

我使用this guide设置我的PC作为回调位置。基本上,您以某种方式设置主机文件,清除缓存并添加几个Firefox注册表值。最后,当您调试oauth调用时,重定向将返回到本地PC。

正如我所说它对我有用。

答案 2 :(得分:1)

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