Facebook身份验证:HttpServletResponse.sendRedirect(URL)与直接在浏览器中输入URL不同?

时间:2011-08-09 10:42:08

标签: java facebook servlets facebook-graph-api

我正在尝试将我的用户重定向到Facebook的“权限请求”页面,方法是将其重定向到

https://graph.facebook.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&scope={permission_scope}

当我直接在浏览器中输入Url时,它会显示在右侧页面上:会出现一个对话框,询问用户是否接受授予我的应用程序权限。

但是当我通过服务器发送重定向请求时:

response.sendRedirect("https://graph.facebook.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&scope={permission_scope}");

它将用户发送到带有大Facebook徽标的页面。如果用户点击徽标,它将正常显示授权页面。

我想知道在我的回复中是否遗漏了一两件事,这使得直接在浏览器中输入结果有所不同。有没有人有同样的问题?

1 个答案:

答案 0 :(得分:2)

这是因为您不能拥有包含Facebook域名页面的应用程序iFrame(在apps.facebook.com上)。

您需要使用JavaScript进行重定向:

response.getWriter().println(
   "<script>" + 
   "top.location.href = \"https://graph.facebook.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&scope={permission_scope}\"" +
   "</script>"
);