Rails3, приложение oauth2 и canvas facebook - оставайтесь на fb canvas, пожалуйста - PullRequest
0 голосов
/ 25 ноября 2010

Я пытаюсь создать приложение facebook для canvas, используя rails 3 и oauth2. Это нормально работает, следуя инструкциям здесь https://github.com/intridea/oauth2

Поэтому, когда я захожу в приложение в FB, оно вызывает методы, установленные oauth2, НО, просит пользователя дать разрешения ВНЕ холста, оно выходит из FB. Затем, когда пользователь дает разрешение, он идет туда, куда он должен идти в приложении, но снова все за пределами FB.

После предоставления разрешений, если я захожу в приложение внутри FB, оно показывает приложение на холсте.

Кто-нибудь знаком с этим?

Приветствие.

Ответы [ 3 ]

0 голосов
/ 10 декабря 2010

Я на самом деле изменил драгоценные камни.

Теперь я использую драгоценный камень devise_oauth2_canvas_facebook.https://github.com/ninajansen/devise_oauth2_canvas_facebook

Он работает вместе с devise и fbgraph, и он работал практически из коробки, поэтому я рекомендую это для приложений canvas fb.

И все остается внутри холста fb: -)

С уважением.

0 голосов
/ 01 ноября 2011

У меня была такая же проблема, и ответил на мой собственный вопрос .Вам необходимо добавить приведенный ниже код в application_contoller согласно Обзорной странице OmniAuth wiki .Но позаботьтесь об использовании request.env ["HTTP_REFERER"] вместо request.full_path.

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.env["HTTP_REFERER"])
  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 
0 голосов
/ 30 ноября 2010

Как я знаю, страница, на которой вы предоставляете права доступа к приложению, должна находиться за пределами страницы приложения. И если вы хотите, чтобы вы были перенаправлены на страницу вашего приложения FB, вы должны использовать

access_token = client.web_server.get_access_token(params[:code], :redirect_uri => redirect_uri)

def redirect_uri
    uri = URI.parse(request.url)
    uri.path = '/fbcanvas'
    uri.query = nil
    uri.to_s
end

Метод redirect_uri специально используется здесь, поэтому, когда вы будете перенаправлены со страницы вашего приложения fb, вы вернетесь туда, а если вас перенаправят с самого сайта, вы вернетесь на свой сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...