有关背景资料,我正在使用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却没有。
答案 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而不是查询字符串参数可能会达到相同的效果。 (当然,除非那些不是选项)