我有一个perl CGI脚本执行Facebook授权流程,如http://developers.facebook.com/docs/authentication/所述。当我在浏览器中访问我的Facebook应用程序页面时,我的脚本从Facebook接收初始查询,验证signed_request,然后将重定向发送到以下URL:
https://graph.facebook.com/oauth/authorize?client_id=NNN&scope= [...]&安培;显示=页面&安培; REDIRECT_URI = HTTP%3A%2F%2Fmydomain.com%3A8080%2Fperl% 2Fdev%2Ffb.pl%3Fcallback%3D1
redirect_uri是我在app config中定义为我的网站的内容,它被接受就好了。但是浏览器显示的是一个大的Facebook徽标图像和它下面的链接,两者都转到:
http://www.facebook.com/connect/uiserver.php?display=page&next=https%3A%2F%2Fgraph.facebook.com%2Foauth%2Fauthorize_success%3Fredirect_uri%3D [...] < / p>
当我点击它,我得到我想要的,“请求权限”页面要求用户授权该应用程序。一切都从那里继续进行。
那我为什么要获得最初的FB徽标页面而不是直接进入授权页面呢?
答案 0 :(得分:1)
有人在Facebook论坛(http://forum.developers.facebook.net/viewtopic.php?pid=290957#p290957)回答了这个问题,具有讽刺意味的是,这里提到了另一个问题。您只需要使用javascript进行客户端重定向,因此CGI脚本的输出应如下所示:
Content-Type: text/html
Content-Length: 344
<script>top.location="https://graph.facebook.com/oauth/authorize?client_id=[...]";</script>