【发布时间】:2011-10-25 11:28:14
【问题描述】:
我正在使用 RoR 3.1 和 Koala 构建 Facebook Iframe 应用。当新用户访问我的应用程序时,iframe 中会显示 Facebook 徽标和“转到 Facebook”链接。单击徽标时,将显示权限弹出窗口。单击允许工作 - 之后我的应用程序运行良好。我看到了一些关于这个主题的其他帖子,但没有一个能让我找到解决方案。
这似乎与此问题中记录的问题相同,但答案对我不起作用:Facebook OAuth login for iframe canvas apps displays a logo image and a Go to Facebook.com caption instead of logging in
我尝试在 index.html.erb 文件的顶部包含 top.location.href,并使用硬编码 URL:top.location.href="https://www.facebook.com/dialog/permissions.request ?appid=xxx,不走运。
我抓取了 facebook 徽标的链接并尝试将其粘贴到 top.location.href,但没有成功。仅供参考,链接如下所示:https://www.facebook.com/dialog/permissions.request?app_id=XXX&display=page&next=http%3A%2F%2Feowyn.simularity.com%3A3000%2Fgifty%2Fcallback&response_type=code&fbconnect=1&perms=user_likes%2Cuser_groups%2Cfriends_likes#
我阅读了 Facebook 上发布的关于它的错误,并以“按设计”关闭。 http://bugs.developers.facebook.net/show_bug.cgi?id=11326
这是一种糟糕的用户体验,我无法想象这是预期的结果。我使用的其他应用程序都没有这个问题。您单击一个链接转到该应用程序,然后出现权限对话框。
添加我的控制器代码以防万一:
SITE_URL="http://mysubdomain.example.com:3000/"
def index
@oauth = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET, SITE_URL + 'myapp/callback')
session[:oauth] = @oauth
redirect_to @oauth.url_for_oauth_code( :permissions => "user_likes,user_groups,friends_likes")
end
#method to handle the redirect from facebook back to you
def callback
#get the access token from facebook with your code
session[:access_token] = session[:oauth].get_access_token(params[:code])
redirect_to '/myapp/menu'
end
def menu
@api = Koala::Facebook::API.new(session[:access_token])
< app code here >
感谢您的帮助! 丽兹
【问题讨论】:
-
您是否尝试将
target="_top"添加到您的链接中?这将打开顶部文档中的链接。但是重定向 uri(下一个)应该是您的画布 url 而不是网站:https://apps.facebook.com/appnamespace -
@ifaour - 哪个链接应该有 target="_top",哪个重定向调用应该转到 apps.facebook.com/appnamespace?我在上面添加了我的代码,这样你就可以看到我在做什么。感谢您的帮助!