2011-09-05 83 views
0

我搜索了幾個小時,發現許多相關的帖子,但沒有能夠解決我的問題。沒有用戶登錄時FB對話框出現問題

目標是使用FB JS SDK顯示一個簡單的「Post to your wall」對話框。在默認情況下,使用代碼here就像魅力一樣。

但是,因爲我打電話給我的對話框顯示了遊戲引擎中的函數(即沒有用戶單擊事件),所以上述wiki中的對話框被彈出窗口攔截器阻止。因此,我測試了使用display:'iframe',而且它工作。但問題在於沒有用戶登錄。在「彈出」模式下,用戶在顯示實際的「發佈到牆上」對話框之前,將顯示一個登錄對話框。但在'iframe'模式下,這個對話框永遠不會出現,而是有一個永遠持續的加載屏幕。

摘要

彈出模式:工作,即使用戶沒有登錄,而是通過彈出窗口阻止程序阻止

的iFrame模式:失敗如果沒有用戶登錄,但不被彈出式窗口攔截器阻止

任何幫助將不勝感激!

回答

0

這是因爲在哪種顯示模式下可以使用哪些對話框有限制。由於存在安全風險,您無法授權iframe中的用戶,必須彈出或重定向才能授權。

「iframe:顯示當前頁面上的lightbox iframe中的對話框由於點擊劫持的風險,只允許某些特定的對話框,並且要求您傳遞有效的access_token。 - 請參閱https://developers.facebook.com/docs/reference/dialogs/#display

修改即可添加:您可能還想閱讀政策和指南文檔。 Facebook建議您僅顯示這些對話框以迴應用戶採取的直接點擊/操作,以防止您的應用看起來像垃圾郵件。自動將內容發佈到用戶的個人資料是一種失去信任的簡單方法。也許你可以重新考慮你的解決方案,以便你的提示顯示出來,以響應用戶點擊某些東西?

+0

tnx你的提示Abby。事實上,用戶點擊了一些東西,但在3D遊戲引擎(Unity3d)中。該點擊在包含遊戲的頁面上觸發一個JavaScript函數。這就是爲什麼彈出式窗口攔截器無法識別點擊,並且像在頁面加載或其他東西(並阻止它)一樣。 –

+0

在這種情況下,也許你想做一個服務器端的圖形API請求,而不是顯示對話框?您可以在遊戲中創建自己的彈出窗口,以便爲用戶提供空間來添加他們的消息,並告訴他們您將發佈內容,然後使用圖形從服務器發佈:https://developers.facebook.com /文檔/參考/ API /#出版。這樣你就不必處理額外的javascript,瀏覽器兼容,彈出攔截器等。 – Abby

+0

我想這是可行的,但是使用現有的FB對話框會更方便,因爲人們認識它們並知道如何處理它們。我正在考慮做一個解決方法,在遊戲界面頂部隱藏/顯示一個html按鈕,用戶可以按這個按鈕發佈到他的牆上。在這種情況下,我可以使用「彈出」顯示模式,這是工作。 –

相關問題