2011-02-13 126 views
2

我有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

回答

0

在Canvas頁面中,您位於iframe中,因此只執行HTTP級重定向會更改iframe中的內容。目前,您正嘗試在Facebook iframe中加載一個Facebook頁面 - 哪些錯誤。

而不是使用

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

你應該做一個JavaScript重定向的。在此模式下,提供HTML文件,該文件是除了這個空白:

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

凡位置字符串是Facebook驗證URL。