Facebook登录显示徽标而不是权限请求

问题描述:

我有Facebook应用程序,但新用户有问题。Facebook登录显示徽标而不是权限请求

当使用直接URL http://eriknijland.nl/raaddestraat/一切工作正常。新用户将被重定向到“请求许可”屏幕。

但是,当使用Facebook的Canvas页面http://apps.facebook.com/raaddestraat/(在iframe中加载前面提到的URL)时,第一次用户可以看到Facebook徽标而不是许可请求。点击徽标重定向到此权限屏幕。但用户很少点击该标志,因为它很不清楚。

如何正确解决这个问题?

我的简化的登录码:

function login() 
{ 
    $authorizationUrl = 'https://graph.facebook.com/oauth/authorize?client_id=' . $this->_applicationId . '&redirect_uri=' . $this->_redirectUrl; 

    header('Location: ' . $authorizationUrl); 
    exit(); 
} 

的_redirectUrl指向一个授权功能。但新用户永远不会在这里结束。因为它需要Facebook的权限。

我读过&尝试使用location.href而不是PHP重定向。它没有效果。使用top.location.href有效。它正在工作。但我不希望我的应用程序退出“Facebook canvas iframe”。

+0

此外,当使用JavaScript版本FB.login()时,它也可以工作。但在很多情况下被阻塞,因为它取决于弹出窗口。 – Erik 2011-02-13 20:32:24

在Canvas页面中,您位于iframe中,因此只执行HTTP级重定向会更改iframe中的内容。目前,您正尝试在Facebook iframe中加载一个Facebook页面 - 哪些错误。

而不是使用

<? header('location: ...'); 

你应该做一个JavaScript重定向的。在此模式下,提供HTML文件,该文件是除了这个空白:

<script> 
    window.top.location = 'https://graph.facebook.com/oauth/autho....' 
</script> 

凡位置字符串是Facebook验证URL。