Невозможно сохранить токен oauth в сеансе (rails) - PullRequest
2 голосов
/ 24 января 2011

K, ребята, поэтому я работал с API dialybooth и OAauth, поэтому сначала у меня был прямой

 #first redirect the user to the authorize_url
  redirect_to dailybooth.authorize_url

 #on user return grab the code from the query string
 dailybooth.oauth_token(params[:code])

 #make request to the api
 pp dailybooth.get('/users.json')

Проблема была в том, что он постоянно перенаправлял, потому что он даже не проверял,oauth_token был установлен, и тогда я сделал это;

unless dailybooth.oauth_token(params[:code])
 #first redirect the user to the authorize_url
 redirect_to dailybooth.authorize_url

 #on user return grab the code from the query string
 dailybooth.oauth_token(params[:code])
end


#make request to the api
pp dailybooth.get('/users.json')

Теперь это отправляет меня на страницу авторизации dailybooth, авторизованный пользователь, затем отправляется на мою страницу, и я получаю доступ к их учетной записи (массив с информацией о пользователе был возвращен), дело в том, что если вы обновили токен, он больше не существовал, и пользователю пришлось повторно авторизоваться.

Итак, я попытался сохранить oauth_token в сеансе,

if session[:oauth_code]  #If session is set
  dailybooth.oauth_token(session[:oauth_code]) #sign in using cookie
else
  if params[:code]
    @oauth_token_ = params[:code]
    session[:oauth_code] = @oauth_token_
  else
      #first redirect the user to the authorize_url
      redirect_to dailybooth.authorize_url
  end
end



#make request to the api
@info = dailybooth.get('/users.json')

if @info['error']      
  if @info['error']['error_code'] 
    if @info['error']['error_code'] == 302 #if getting invalid token, request another token.
      session[:oauth_code] = nil
      #first redirect the user to the authorize_url
      redirect_to dailybooth.authorize_url

    end
  end
end

Я все еще получаю то же самое, когда впервые захожу на свой сайт, и меня перенаправляютна страницу авторизации он авторизуется, затем я получаю доступ к учетной записи, но когда я пытаюсь вернуться к индексу, он говорит, что oauth_token недействителен.Любая помощь?

1 Ответ

0 голосов
/ 06 февраля 2011

Я буду честен, я не уверен на 100% (и документации API DailyBooth ... не хватает, по меньшей мере), но я считаю, что вы используете "токен" (тот, который вы получаетеиз params[:code] и сохранения в @oauth_token_), чтобы получить токен доступа, а затем сохранить токен доступа (например, вместо этого сохранить форму результата dailybooth.oauth_token(session[:oauth_code]) или хотя бы ее часть, если это объект / массив).

unless session[:oauth_code] #unless the session is set
  if params[:code]
    session[:oauth_code] = dailybooth.oauth_token(params[:code])
  else
    #first redirect the user to the authorize_url
    redirect_to dailybooth.authorize_url
  end
end

#make request to the api
@info = dailybooth.get('/users.json')

if @info['error']      
  if @info['error']['error_code'] 
    if @info['error']['error_code'] == 302 #if getting invalid token, request another token.
      session[:oauth_code] = nil
      #first redirect the user to the authorize_url
      redirect_to dailybooth.authorize_url

    end
  end
end

Надеюсь, это направит вас в правильном направлении.

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