2011-10-17 42 views
0

我有一個公共計稅頁面的Rails +設計:重定向到一個特定的URL在公共頁面的Facebook登錄

"http://www.example.com/gift/5" 

有上有一個連接Facebook按鈕。

我希望用戶點擊Facebook的連接按鈕,然後被重定向到

"http://www.example.com/gift/5/coupon" 

目前設計/ Omniauth似乎失去了會話,因爲它是對用戶進行認證。 我試圖發送一個Ajax請求之前,我做了FB.api

FB.login(function(response) { 
    if (response.session) { 
     $.ajax({ 
      url : '/ajax/facebook/url', 
      type : 'post', 
      data : {push_to: "/gift/5/coupon"}, 
      beforeSend: function(xhr) { 
       xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content')); 
      } 
     }); 
     window.location = "https://graph.facebook.com/oauth/authorize?client_id=.........."; 
    } else { 

    } 
    }); 

Ajax請求命中

class AjaxController < ApplicationController 

    def ajax_facebook_url_redirect 

    session[:"fb_redirect_to"] = params[:push_to] 

    end 

但是在這兩種

application_controller.rb 

def after_sign_in_path_for(resource) 
    print session[:"fb_redirect_to"] 
    (session[:"user.return_to"].nil?) ? "/" : session[:"user.return_to"].to_s 
    end 

我找不到變量有關將用戶從公共頁面發送到特定網址的任何建議?

回答

0

有剛加入的設計網站上的OmniAuth概述文檔一個新的部分,解決這個問題:https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview

這裏是要點:

def authenticate_user! 
    if !current_user 
    # This should work, but session is lost. See https://github.com/plataformatec/devise/issues/1357 
    # session[:return_to] = request.fullpath 
    redirect_to user_omniauth_authorize_path(:google_apps, :origin => request.fullpath) 
    end 
end 

def after_sign_in_path_for(resource) 
    # This should work, but session is lost. See https://github.com/plataformatec/devise/issues/1357 
    # return_to = session[:return_to] 
    # session[:return_to] = nil 
    return_to = request.env['omniauth.origin'] 
    stored_location_for(resource) || return_to || root_path 
end 
+1

這只是將用戶返現頁面上。我試圖讓它更進一步「/禮物」到「/禮物/優惠券」 – Daxon

相關問題