Twitter OAuth не перенаправляет обратно на мой веб-сайт должным образом - PullRequest
3 голосов
/ 21 августа 2011

Отказ от ответственности : Я все еще начинаю с MVC3 (и OAuth в частности).Возможно, я делаю основную ошибку.

Проблема

Мой контроллер видит, что cookie не сохраняется [Примечание: да, я используюпеченье за ​​другое обсуждение.Давайте примем это и продолжим.] и направит меня в Твиттер.Отлично.Однако, когда я нажимаю кнопку авторизации, я сразу возвращаюсь на страницу авторизации Twitter.

Пока что у меня нет догадок

Похоже, что мое приложение неправильно обрабатывает Twitterобратный вызов / обратный вызов на мою страницу.

Ингредиенты

  • ASP.NET MVC 3
  • Библиотека Twitterizer
  • C #

Общая идея / логический поток

Может быть проблема с этим, так как это мой первый обход с MVC3 и OAuth.

http://i56.tinypic.com/2rxchw7.png

Код

Сначала я не решаюсь опубликовать его, потому что хочу убедиться, что мое восприятие того, как это должно происходить,Правильно, и потому, что по понятным причинам есть кое-что из того, что нужно понять.

Заранее благодарим за любую помощь, которую вы можете оказать!

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Если я правильно читаю вашу блок-схему, возможно, вы неправильно поняли часть потока oauth.Когда я следил за графиком, как если бы пользователь впервые заходил (без cookie, без токена / верификатора), у вас появился POST после взаимодействия с Twitter.Там никогда не будет ПОЧТА.Серверы Twitter не выполняют обратный вызов.Пользователь будет перенаправлен (HTTP 302) на URL-адрес обратного вызова с токеном и верификатором, добавленным к строке запроса.

Кроме того, кажется странным, что в зависимости от того, имеется ли у вас верификатор или токен, поведение отличается.Если вы делаете это правильно, у вас никогда не будет одного без другого, и даже если вы делаете это неправильно, у вас никогда не будет верификатора без токена.

В какой момент вы вызываетеМетод GetAccessToken?

0 голосов
/ 22 августа 2011

Я не уверен на 100%, так как я не профессионал в Twitter API. Но я думаю, что Twitter запрещает localhost как обратный вызов. И может быть, они выполняют поиск, который URL-адрес разрешает, прежде чем разрешить перенаправление. Они не смогут достичь чего-то указанного в вашем файле .hosts.

Попробуйте просто ввести oauth_callback для действующего URL-адреса, желательно того, который вы сами контролируете. Проверьте, что вы там оказались. Затем вы можете узнать, как получить oauth_token и oauth_verifier. (совет: очистите URL-адрес или, если возможно, попросите страницу распечатать переменные на экране для упрощения очистки).

Также проверьте, указав "oob" в качестве обратного вызова, посмотрите, что произойдет.

EDIT : Я только что понял, что очистка URL не будет работать, так как вы делаете веб-приложение. Сожалею. Но как насчет того, чтобы иметь действующий URL-адрес, возьмите oauth_token и oauth_verifier и с этой страницы перенаправьте на localhost или что-то еще?

...