我正在尝试在我的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。如果有人能帮助我,我将永远感激不尽!
谢谢, 甲
答案 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))
);
?>