我有一個使用jQuery Mobile構建的移動網站。我經常在我的iPhone上以全屏/移動網絡應用程序模式運行它(我已將Web應用程序添加到我的iPhone主屏幕)。如何在使用Facebook Connect登錄後返回iPhone Web應用程序?
在其中一個頁面上,用戶需要使用Facebook Connect JavaScript API登錄Facebook。如果用戶尚未登錄,則通過單擊登錄按鈕完成。此按鈕的事件處理程序是這樣的:
("#fbLogin").click(function() {
FB.login(handleStatusChange(response),
{ scope: "publish_stream",
connect_display: "touch" });
});
在我已經插入了一些換行以提高可讀性上面的代碼,但這些值是一樣的例子。回調函數(handleStatusChange)負責處理來自登錄請求的響應。
當我點擊這個時,Facebook登錄頁面在我的web應用程序窗口中打開。如果我還沒有接受Facebook應用程序,我也必須授予它權限。所有這些似乎工作正常。但是當我給予權限/登錄後,我留在一個完全空白的屏幕上。
我也曾嘗試另一種方法來登錄,通過把這個登錄按鈕事件處理中:
window.location = "https://www.facebook.com/login.php
?api_key=MY_API_KEY
&cancel_url=http%3A%2F%2Fwww.mywebsiteurl.com%3A8081
&fbconnect=1
&next=http%3A%2F%2Fwww.mywebsiteurl.com%3A8081
&return_session=1
&session_version=3
&v=1.0
&req_perms=publish_stream
&connect_display=touch";
同樣,換行已插入了更好的可讀性。當使用它只是一個長的字符串。
在cancel_url和下一個參數使用的URL是我與Facebook應用程序註冊的一個。如果我嘗試使用其他網址(例如http://www.google.com),則會出現錯誤,因此這似乎是正確的。正如你所看到的,我在我的開發服務器上使用了不同的端口(端口8081)。這可能是一個問題嗎?
結果與上例相似。我得到了登錄/權限頁面,但在完成所有操作後,我留下了一個空白屏幕。我在reading this post on the old Facebook Developer forum之後試過這個。
另一方面,如果我嘗試在Safari中運行此應用程序(而不是整個頁面的iPhone Web應用程序),登錄的效果很好。
還有什麼我可以嘗試嗎?有沒有人在iPhone上以全屏/網絡應用程序模式運行JavaScript API Connect登錄工作?
在此先感謝!
如果您嘗試以全屏/ Web應用程序模式(將其添加到主屏幕)運行Facebook自己的移動網站演示網站(http://www.facebookmobileweb.com/hackbook/)看到同樣的問題。 – tkahn 2011-12-22 15:24:29
今天,我收到了Facebook的消息,他們確認這是一個錯誤,並且已將其分配給開發團隊。如果任何人有一個可行的解決方法,我全都耳熟能詳。否則,我們只能等待,直到我們從Facebook開發團隊獲得更多信息。 – tkahn 2011-12-23 17:25:39
特卡恩的bug在這裏報道https://developers.facebook.com/bugs/317323871621290 – 2011-12-27 11:00:10