Вы не сможете получить доступ к детали после символа «#», так как браузер не отправляет ее на сервер.Вы можете использовать его на стороне клиента вместе с javascript.
Похоже, вы пытаетесь использовать аутентификацию на основе javascript , что не совсем то, что вам действительно нужно.* У меня не было проблем с использованием этой oauth2 библиотеки.Тогда вам нужно только проверить наличие params[:code]
в вашем действии обратного вызова.
ОБНОВЛЕНИЕ:
Это упрощенная версия кода, который я использовал в своих экспериментах сновый API Facebook facebook:
# Accessible as facebook_url:
# routes.rb: map.facebook '/facebook', :controller => 'facebook', :action => 'index'
def index
oauth2 = OAuth2::Client.new(FB_API_KEY, FB_API_SECRET, :site => 'https://graph.facebook.com')
if current_user.facebook_token
# The user is already authenticated
fb = OAuth2::AccessToken.new(oauth2, current_user.facebook_sid)
result = JSON.parse(fb.get('/me'))
elsif params[:code]
# Here we get the access token from facebook
fb = oauth2.web_server.get_access_token(params[:code], :redirect_uri => facebook_url)
result = JSON.parse(fb.get('/me'))
current_user.facebook_id = result["id"]
current_user.facebook_token = fb.token.to_s
current_user.save
else
# The user is visiting this page for the first time. We redirect him to facebook
redirect_to oauth2.web_server.authorize_url(:redirect_uri => facebook_url, :scope => 'read_stream,publish_stream,offline_access')
end
end
Вам больше ничего не нужно, чтобы это работало.