OAuth с authlogic и твиттером.Не перенаправляет должным образом - PullRequest
0 голосов
/ 07 сентября 2011

У меня проблемы с подключением свободного конца в oauth и authlogic.Я запускаю rails 3.0.9 с authlogic, работающим нормально, и я хотел добавить в твиттер логин.

Проблема, с которой я сталкиваюсь, заключается в том, что после входа в твиттер вместо того, чтобы быть перенаправленным на обратный URL-адрес, определенный в настройках твиттера.Приложение перенаправляет на верхний домен, добавляя его к URL-адресу user_sessions? Oauth_token = [t_o_k_e_n]

У меня нет действия с индексом в user_sessions_controller.rb, поэтому я получаю, что индекс действия не может быть найден,но я не могу понять, почему меня перенаправляют на этот URL?

Мой user_sessions.rb

class UserSession < Authlogic::Session::Base 
#  def to_key
#   new_record? ? nil : [ self.send(self.class.primary_key) ]
#  end
#
#  def persisted?
#    false
#  end
#  
  def self.oauth_consumer
    OAuth::Consumer.new("asdasdsad", "asdasdasdas",
    { :site=>"http://twitter.com",
      :authorize_url => "http://twitter.com/oauth/authenticate"})
  end
end

Мой user_sessions_controller.rb

class UserSessionsController < ApplicationController
  # GET /user_sessions/new
  # GET /user_sessions/new.xml
  def new
    @user_session = UserSession.new

  end


  # POST /user_sessions
  # POST /user_sessions.xml
  def create
    @user_session = UserSession.new(params[:user_session])
    @user_session.save do |result|
      if result
        flash[:notice] = "Login successful!"
        redirect_back_or_default root_path
      else
        render :action => :new
      end
    end
#    respond_to do |format|
#      if @user_session.save
#        format.html { redirect_to(root_path, :notice => 'User session was successfully created.') }
#        format.xml  { render :xml => @user_session, :status => :created, :location => @user_session }
#      else
#        format.html { render :action => "new" }
#        format.xml  { render :xml => @user_session.errors, :status => :unprocessable_entity }
#      end
#    end
  end

  # DELETE /user_sessions/1
  # DELETE /user_sessions/1.xml
  def destroy
    @user_session = UserSession.find
    @user_session.destroy

    respond_to do |format|
      format.html { redirect_to(root_path, :notice => 'Goodbye!') }
      format.xml  { head :ok }
    end
  end
end

Я дажепопытался добавить

:oauth_callback => "http://127.0.0.1:3000/"

в предложение Consumer.new, но это не помогло.

Наконец, мой route.rb выглядит следующим образом:

resources :users, :user_sessions
  match 'login' => 'user_sessions#new', :as => :login
  match 'logout' => 'user_sessions#destroy', :as => :logout

У кого-нибудь есть идеи, как решить эту проблему, или у вас была похожая проблема?

1 Ответ

0 голосов
/ 07 сентября 2011

https://dev.twitter.com/sites/default/files/images_documentation/oauth_diagram.png довольно четко определяет, что вы должны отправлять и получать от провайдера Twitters Oauth.

Вы уверены, что на шаге B вы получите oauth_callback_confirmed, если да, то вы можете связаться с Twitter, почемуони проверяют ваш oauth_callback, а затем изменяют его

...