0

我正在尝试使用 rails 3 和 oauth2 制作一个画布 Facebook 应用程序。按照这里的步骤https://github.com/intridea/oauth2可以正常工作

因此,当我在 FB 中访问应用程序时,它会触发 oauth2 设置的方法,但它会要求用户在画布外部授予权限,它会退出 FB。然后,当用户授予权限时,它会转到应用程序中应该去的地方,但又是 FB 之外的所有内容。

在授予权限后,如果我转到 FB 内的应用程序,则它会在画布中显示该应用程序。

有谁熟悉这个?

干杯。

4

3 回答 3

0

我实际上改变了宝石。

我现在使用的是 devise_oauth2_canvas_facebook gem。 https://github.com/ninajansen/devise_oauth2_canvas_facebook

它与 devise 和 fbgraph 一起工作,而且开箱即用,所以我推荐它用于画布 fb 应用程序。

一切都留在 fb 画布内:-)

问候。

于 2010-12-10T08:30:56.153 回答
0

据我所知,您授予应用程序权限的页面应该在应用程序页面之外。如果你想被重定向到你的 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 应用页面重定向时,您将返回那里,如果您从您的站点本身重定向,您将返回到您的站点。

于 2010-11-30T00:10:36.230 回答
0

我有同样的问题并回答了我自己的问题。您需要根据OmniAuth 概述 wiki页面将以下代码添加到 application_contoller。但请注意使用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 
于 2011-11-01T17:17:25.533 回答