我在計算如何爲移動Web應用程序實現Facebook Oauth時遇到了很多麻煩。我想使用「touch」界面,如其開發人員網站上以下代碼示例中的「display」參數所示。有沒有人有使用此代碼的經驗?我似乎無法讓它在Javascript中工作。是否有其他方式讓我的用戶看到觸摸啓用登錄界面?面向移動網絡的Facebook Oauth
這裏,我指的是文檔:http://developers.facebook.com/docs/guides/mobile/
我在計算如何爲移動Web應用程序實現Facebook Oauth時遇到了很多麻煩。我想使用「touch」界面,如其開發人員網站上以下代碼示例中的「display」參數所示。有沒有人有使用此代碼的經驗?我似乎無法讓它在Javascript中工作。是否有其他方式讓我的用戶看到觸摸啓用登錄界面?面向移動網絡的Facebook Oauth
這裏,我指的是文檔:http://developers.facebook.com/docs/guides/mobile/
是的,有一種方法可以讓您的手機瀏覽器用戶看到啓用觸摸的登錄界面。除了使用FB SDK,你需要需要使用oauth
方法如下所述:
http://developers.facebook.com/docs/authentication/
我使用了「服務器端流量」做你想要做什麼和它似乎很好。
首先您重定向到FB oauth頁面,將您的應用程序ID和着陸頁作爲回調傳遞(注意:landing_page必須格式化爲目錄並且不能是文檔!)。如果您需要display=touch
和可選應用程序數據,請使用state
。
document.location='http://www.facebook.com/dialog/oauth?client_id=' + appid +
'&redirect_uri=http://' + landing_page + '/&display=touch&state=' +
optional_app_data;
在用戶登錄成功後,您的用戶會被重定向與code
一個GET
變量LANDING_PAGE。您可以使用此code
得到一個access_token
如果您需要查詢類似這樣的用戶信息(在PHP)的開放圖形API:
$response = file_get_contents("https://graph.facebook.com/oauth/access_token?"
."client_id=FACEBOOK_ID."&redirect_uri=http://". landing_page
."/oauth/&client_secret=".FB_APPSECRET."&code=$authcode");
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token=".$params['access_token'];
我認爲根本問題是/的OAuth /授權和/ OAuth的/永遠的access_token名爲設置的fbs_APP_ID餅乾,所有的FB.Events訂閱。 「JavaScript API將登錄用戶的詳細信息保存在名爲fbs_APP_ID的簽名cookie中:只能使用標準fb:登錄按鈕等。 任何人都知道如何使用/ oauth設置cookie fbs_APP_ID?
您無法使用Facebook對話框登錄用戶,它是來自Facebook的安全措施。使用彈出窗口被大多數移動瀏覽器阻止。
你可以做的是將用戶引導至http://m.facebook.com/dialog/oauth/?scope=read_stream,publish_stream,offline_access,email&client_id=YOUR APP ID & redirect_uri ='+ window.location +'& response_type = token';
這將引導用戶到m.facebook.com通過Facebook移動登錄,並將用戶重定向到redirect_uri,在這種情況下,我使用javascript window.location獲取當前頁面im的url 。它會傳回用戶信息和一個將被facebook javascript SDK訪問的令牌。
然後,你可以提示facebook javascript SDK像FB.ui一樣的其他觸摸動作,比如貼到牆上,這在對話框中看起來非常甜。
但是我會告訴你,我必須在我的服務器上託管facebook all.js文件,並手動將寬度從575px更改爲290px以適合手機屏幕。