Twitter OAuth是否支持在callBack url中包含空格的queryString参数?

时间:2010-07-23 08:36:31

标签: twitter oauth query-string

有关背景资料,我正在使用TweetSharp 1.0进行推文。无论回调网址是否包含查询字符串参数(CallbackConfirmed为true),它们都会被收到,但是当它们包含查询字符串参数时,它们不会在授权时重定向。他们前往推特看起来很精致和花花公子(例如:http://api.twitter.com/oauth/authorize?oauth_token=MYTOKENREMOVED&oauth_callback=http://www.mywebsite.co.uk?q=Woop%20Woop)但是当Twitter应该重定向到回调网址时,它只是将它们重定向到twitter.com。

这似乎只发生在我在回调网址中使用空格时 - oauth_callback = http://www.mywebsite.co.uk?q=Woop_Woop有效,而oauth_callback = http://www.mywebsite.co.uk?q=Woop%20Woop却没有。

2 个答案:

答案 0 :(得分:4)

您提供的任何查询字符串参数都必须进行网址编码。空格应该变为“+”而不是%20(Server.UrlEncode将在.NET中完成工作)。 %20与+ 不同,因此oauth_callback = http://www.mywebsite.co.uk?q=Woop%20Woop应该变为:oauth_callback = http://www.mywebsite.co.uk?q=Woop+Woop

另外...... Server.UrlEncode不能正常工作,因为“编码中的十六进制字符必须大写”(参见http://oauth.net/core/1.0/的5.1节),C#编码为小写。我相信JavaScript也可以编码为低级而不是大写。对于C#,可以在.net UrlEncode - lowercase problem

找到小写编码问题的快速解决方案

答案 1 :(得分:0)

无论出于何种原因,我都无法让它发挥作用。但对于处于相同情况的任何人,在将头撞到墙上数小时之前,请注意,使用cookie或session而不是查询字符串参数可能会达到相同的效果。 (当然,除非那些不是选项)