2011-09-29 70 views
0

我想要求用戶授予我的應用程序與「Facebook的JavaScript SDK」的「publish_stream」權限。Fb.ui()彈出工程,但對話框永久加載

我初始化這樣的:

FB.init({ 
    appId : '203702512703', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true, // parse XFBML 
    channelURL : 'http://mydomain.com/channel.php', // channel.html file 
    oauth : true // enable OAuth 2.0 
}); 

而且我FB.ui調用如下:

FB.ui({ 
    client_id: '203702512703', 
    method: 'oauth', 
    scope: 'publish_stream', 
    redirect_uri: 'http://mydomain.com/', 
    response_type: 'token', 
    display: 'dialog' 
    }); 

如果我更改 '對話框中' 到 '彈出' 它完美的作品。但是,如果我指定'對話框'或將選項保留出來,它會顯示fb-div,但帶有一個加載動畫(如下所示:http://p.iqs.me/t1c4j),並且內容不會加載。

我在做什麼錯了?

更新: 我找到了這個網頁http://developers.facebook.com/docs/reference/dialogs/#display,上面寫着有關使用「IFRAME」爲顯示以下內容: 「因爲點擊劫持的危險,這是隻允許某些特定的對話,並要求你通過一個有效的access_token 「

不會說任何關於」對話框「的想法,但iframe和對話框都會給出相同的錯誤結果。

我將如何通過access_token?

+0

您是否遇到類似於[bug](http://bugs.developers.facebook.net/show_bug.cgi?id=18942)的問題? – ifaour

+0

似乎有點相似。但是,如果這是一個錯誤,我想成千上萬的應用程序會受到它的影響。這更可能是我在這裏做錯了事。 – Martin

回答

1

由於安全性(clickjacking和網上誘騙),'popup'對於JavaScript SDK的'oauth'或FB.login是強制性的。我建議使用FB.login來獲取權限或進行身份驗證,因爲它更方便。

希望這有助於

+0

好的。謝謝:)這沒有很好的記錄。 – Martin

+0

@Martin:我同意 –

0

也有在你可以使用顯示器的方式的差異:這取決於您是否是在一個標籤或畫布上的iframe的FB.login。在選項卡上,您不需要access_token,並且在畫布上進行操作。

因此,在一個畫布上,您被阻止彈出窗口被阻止,或很大一部分用戶拒絕爲他們發起的牆壁提供基本權限。 IMVHO FB需要儘快解決這個問題,但是我已經記錄了幾個月的bug,並且沒有任何改變的跡象。