Приложение Facebook iframe перенаправляется из холста после авторизации пользователя - PullRequest
2 голосов
/ 20 октября 2011

Мое приложение facebook перенаправляется на URL-адрес холста (http://my -домен / приложение) после того, как пользователь авторизовал приложение. Последовательность шагов описана ниже:

1) Новый пользователь открывает приложение на холсте и перенаправляется в диалог прав доступа через перенаправление Javascript

2) Как только пользователь авторизовал приложение, вызывается redirect_uri приложения, и я получаю токен доступа, который я сохраняю в сеансе

3) Я также получаю идентификатор авторизованного пользователя и сохраняю его в сеансе

4) Когда я перенаправляю его на URL-адрес холста, он выходит из холста Facebook

5) Если я пытаюсь перенаправить его на страницу холста (http://apps.facebook.com/app_name), он застревает в бесконечном цикле, потому что значения сеанса очищаются и процесс повторяется - я не знаю почему.

Это приложение rails 3, и я использую камень коала. Код показан ниже:

  def index
    if (session[:access_token].blank?)
    session[:oauth] = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET, oauth_redirect_url)
    end
    @app_id = APP_ID
  end

  def redirect
    session[:access_token] = session[:oauth].get_access_token(params[:code]) if params[:code]
    if session[:access_token].blank?
      flash[:error] = "You didn't authorize the application. Please authorize the application to throw a firecracker on your friend's wall!"
      redirect_to :action => "authorize_app" and return
    else
      session[:fb_user_id] = Koala::Facebook::API.new(session[:access_token]).get_object("me")["id"]
    end
    redirect_to :action => "index"
  end

Я потратил почти целый день, пытаясь это исправить, и в поисках решения, но на данный момент ничего особенного.

1 Ответ

3 голосов
/ 20 октября 2011

Шаг 1, Шаг 2, Шаг 3 в порядке

Шаг 4: Когда пользователь авторизует ваше приложение, оно будет перенаправлено на yourapp.com (URL-адрес холста) на холсте URL, вы будете делать:

<script>
window.top.location='https://apps.facebook.com/yourapp' //(canvas page)
</script>

шаг 5: при вызове страницы холста вы получите signed_request, затем с помощью fb api вы ее проанализируете.

...