Разбор # в рельсах Uris - PullRequest
       4

Разбор # в рельсах Uris

0 голосов
/ 18 июня 2010

Я получаю следующую информацию URL, и мне нужно проанализировать ее в рельсах.я уже проверил запрос и параметры, но его там нет.

символ "#", кажется, запутывает вещи.

вот URL:

http://foo.bar.me/whoo#access_token=131268096888809%7C2.5BRBl_qt4xJ08n88ycbpZg__.3600.1276880400-100001151606930%7C0kJ1K-qoGBbDoGbLx6s4z5UEaxM.

спасибо за любые указатели.

1 Ответ

1 голос
/ 18 июня 2010

Вы не сможете получить доступ к детали после символа «#», так как браузер не отправляет ее на сервер.Вы можете использовать его на стороне клиента вместе с 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

Вам больше ничего не нужно, чтобы это работало.

...