API TwitPic не отвечает правильно - продолжает возвращать 401 - PullRequest
0 голосов
/ 12 февраля 2011

Итак, я все еще пытаюсь сделать этот клиент Twitter и работаю над вложениями изображений для него, но не могу заставить TwitPic API работать с oAuthTwitter (платформа oAuth, которую я использую клиент).

Вот код:

StringBuilder sb = new StringBuilder();
            filePath = filePath.Replace("\\", "/");
            sb.AppendFormat("?message={1}&media={0}&key={2}&consumer_token={3}&consumer_secret={4}&oauth_token={5}&oauth_secret={6}",
                HttpUtility.UrlEncode("@" + filePath), HttpUtility.UrlEncode(tweet), HttpUtility.UrlEncode(apiKey), HttpUtility.UrlEncode(oAuth.ConsumerKey), HttpUtility.UrlEncode(oAuth.ConsumerSecret), HttpUtility.UrlEncode(oAuth.Token), HttpUtility.UrlEncode(oAuth.TokenSecret));
            string req = sb.ToString();
            debu.Write("[DEBUG]     Request: " + req);
            string response = "hai";
            try
            {
                response = oAuth.WebRequest(oAuthTwitter.Method.POST, "http://api.twitpic.com/1/uploadAndPost.json",
                    req);
            }
            catch (Exception e) { debu.Write("[FATAL]   " + e.Message); return false; }
            debu.Write("[DEBUG]     Response: " + response);

            return true;

Файл отладки читает следующее:

[2/12/2011 3:27:30 PM] [DEBUG]     Request: ?message=This+is+testing+the+image+uploader+for+TwitterAPI&media=C%3a%2fIcon.png&key=33a6804da25ac80ff3d7ba985c6e9a96&consumer_token=EPYl2jwBzUOANlRHC67Q&consumer_secret=yfOz603EbkDat1PBEq05jhvkFuYNvTPwZI1wk2uc&oauth_token=37993700-dU1ecaBlPLBFnVj4LKu6TG5yQRmmlCGr2FX97EqM&oauth_secret=4z6738kJwJaGlJgwiJ5x20prCGccpipcUdnzVpfS6U
[2/12/2011 3:27:31 PM] [FATAL]   The remote server returned an error: (400) Bad Request.

Любые предложения о том, почему это может не работать?

1 Ответ

0 голосов
/ 12 февраля 2011

Вы - URL, кодирующий вашу полную строку запроса.

Это означает, что такие вещи, как & кодируются как %26 и = как %3D.Это неправильно, так как ваши параметры не будут рассматриваться API как параметры.

Вы должны кодировать только имена параметров и значения.

...