2010-09-30 71 views
3

我在計算如何爲移動Web應用程序實現Facebook Oauth時遇到了很多麻煩。我想使用「touch」界面,如其開發人員網站上以下代碼示例中的「display」參數所示。有沒有人有使用此代碼的經驗?我似乎無法讓它在Javascript中工作。是否有其他方式讓我的用戶看到觸摸啓用登錄界面?面向移動網絡的Facebook Oauth

這裏,我指的是文檔:http://developers.facebook.com/docs/guides/mobile/

回答

5

是的,有一種方法可以讓您的手機瀏覽器用戶看到啓用觸摸的登錄界面。除了使用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']; 
1

我認爲根本問題是/的OAuth /授權和/ OAuth的/永遠的access_token名爲設置的fbs_APP_ID餅乾,所有的FB.Events訂閱。 「JavaScript API將登錄用戶的詳細信息保存在名爲fbs_APP_ID的簽名cookie中:只能使用標準fb:登錄按鈕等。 任何人都知道如何使用/ oauth設置cookie fbs_APP_ID?

1

您無法使用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以適合手機屏幕。