2010-07-23 60 views
3

有關背景信息,我使用TweetSharp 1.0來執行我的推文。無論它們是否包含querystring參數(CallbackConfirmed爲true),都會收到回調URL,但它們在包含查詢字符串參數時不會重定向到授權。他們走到twitter看起來很好,很漂亮(例如:http://api.twitter.com/oauth/authorize?oauth_token=MYTOKENREMOVED&oauth_callback=http://www.mywebsite.co.uk?q=Woop%20Woop),但是當twitter被重定向到回調網址時,它只是將它們重定向到twitter.com。Twitter OAuth是否支持callBack url中包含空格的queryString參數?

這似乎只發生在我在回調url中使用空格時 - oauth_callback = http://www.mywebsite.co.uk?q=Woop_Woop works,而oauth_callback = http://www.mywebsite.co.uk?q=Woop%20Woop沒有。

回答

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不會相當的工作,因爲「在編碼十六進制字符必須是大寫的」(見5.1的http://oauth.net/core/1.0/)和C#編碼爲小寫。我相信JavaScript也會編碼爲低於而不是大寫。對於C#,可以在下面找到小寫編碼問題的快速解決方案:.net UrlEncode - lowercase problem

+0

我只是自己遇到這個問題,如果我使用+而不是%20,它會重定向回URL的+版本,但是現在我的問題是網絡應用程序不識別+而不是%20在URL :(任何想法? – Redth 2012-03-01 16:34:02

0

無論出於何種原因,我始終無法獲得此工作。但是對於處於同一情況的任何人,在將頭靠在牆上數小時之前,請注意,使用Cookie或會話而不是查詢字符串參數可能會達到相同的效果。 (當然,除非那些不是選項)