我被迫重定向到Facebook App IFRAME中的徽标页面

时间:2011-09-22 10:47:54

标签: ruby facebook oauth sinatra

我想在IFRAME(Facebook Apps)中登录facebook。

使用注销转到http://apps.facebook.com/oauthtwosample/,然后点击“登录”链接。

当重定向权限请求对话框页面时,响应标头具有位置标头。

以下Chrome浏览器屏幕截图:

http://gyazo.com/0f4988158cb0e0a9f52545374540de96

如果您有任何想法,请告诉我。

来源:

require 'rubygems'
require 'sinatra'
require 'oauth2'
require 'json'

@@client = OAuth2::Client.new(
  'xxxxxxxxxxxxx',
  'xxxxxxxxxxxxxxxxxxxxxxxx',
  :site => 'https://graph.facebook.com'
)

def redirect_uri
  uri = URI.parse(request.url)
  uri.path = '/auth/facebook/callback'
  uri.query = nil
  uri.to_s
end

get '/' do
  '<a href="/auth/facebook">login</a>'
end

post '/' do
  '<a href="/auth/facebook">login</a>'
end

get '/auth/facebook' do
  redirect @@client.web_server.authorize_url(
    :redirect_uri => redirect_uri,
    :scope => 'email,offline_access'
  )
end

get '/auth/facebook/callback' do
  access_token = @@client.web_server.get_access_token(
    params[:code],
    :redirect_uri => redirect_uri
  )
  user = JSON.parse(access_token.get('/me'))
  user.inspect
end

1 个答案:

答案 0 :(得分:1)

这是因为您可以轻松地在未经许可的情况下重定向用户 通过添加target =“_ top”来解决它。

<a href="url" target="_top">login</a>