2010-07-23 3 views
3

Pour des informations de fond, j'utilise TweetSharp 1.0 pour faire mon tweet. Les URL de rappel sont reçues indépendamment du fait qu'elles contiennent un paramètre de chaîne de requête (CallbackConfirmed est true), mais elles ne redirigent pas lorsqu'elles contiennent un paramètre de chaîne de requête. Ils se dirigent vers Twitter en regardant bien et dandy (exemple: http://api.twitter.com/oauth/authorize?oauth_token=MYTOKENREMOVED&oauth_callback=http://www.mywebsite.co.uk?q=Woop%20Woop) mais quand Twitter est censé rediriger vers l'URL de rappel, il les redirige juste vers twitter.com. Cela ne semble se produire que lorsque j'utilise des espaces dans le callback url - oauth_callback = http://www.mywebsite.co.uk?q=Woop_Woop alors que oauth_callback = http://www.mywebsite.co.uk?q=Woop%20Woop ne fonctionne pas. Les paramètres de chaîne de requête que vous fournissez doivent être codés en url.Twitter OAuth prend-il en charge les paramètres queryString contenant des espaces dans l'URL callBack?

Répondre

4

Les espaces devraient devenir "+" et non% 20 (Server.UrlEncode fera le travail dans .NET). % 20 ne sont pas les mêmes que + donc oauth_callback = http://www.mywebsite.co.uk?q=Woop%20Woop doit devenir: oauth_callback = http://www.mywebsite.co.uk?q=Woop+Woop

En plus ... Server.UrlEncode ne fonctionnera pas tout à fait parce que « les caractères hexadécimaux dans codages DOIT être majuscules » (voir la section 5.1 de http://oauth.net/core/1.0/) et les codes C# en minuscules. Je crois que JavaScript encode aussi à la baisse plutôt que la majuscule. Pour C# une solution rapide au problème de codage en minuscules peut être trouvée à: .net UrlEncode - lowercase problem

+0

Je suis juste en train de rencontrer cela moi-même, et si j'utilise + au lieu de% 20, il redirige vers la version + de l'URL, mais mon problème est maintenant le l'application web ne reconnaît pas + au lieu de% 20 dans l'url :(Des idées? – Redth

0

Pour une raison quelconque, je n'ai jamais réussi à faire fonctionner cela. Mais pour n'importe qui dans la même situation, avant de vous cogner la tête contre le mur pendant des heures, notez que vous pouvez probablement obtenir le même effet en utilisant des cookies ou une session à la place des paramètres de la chaîne de requête. (Sauf si ce ne sont pas des options, bien sûr)