Facebook Oauth移动网络

时间:2010-09-30 21:21:02

标签: facebook oauth

我在弄清楚如何为移动网络应用程序实施Facebook Oauth方面遇到了很多麻烦。我想在他们的开发者网站上使用以下代码示例中“display”参数中指示的“touch”界面。有没有人有使用此代码的经验?我似乎无法在Javascript中使用它。是否有其他方法可以让我的用户看到触摸启用登录界面?

以下是我所指的文档:http://developers.facebook.com/docs/guides/mobile/

3 个答案:

答案 0 :(得分: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;

用户成功登录后,您的用户将被重定向到landing_page,其GET变量为code。如果您需要查询Open Graph API以获取此类用户信息(在PHP中),则可以使用此code获取access_token

$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 :(得分:1)

我认为基本问题是/ oauth / authorize和/ oauth / access_token从不设置所有FB.Events订阅的名为fbs_APP_ID的cookie。 “JavaScript API将已登录用户的详细信息保存在名为fbs_APP_ID的已签名cookie中:”这仅使用标准的fb:login-button等进行。 有人知道如何使用/ oauth设置cookie fbs_APP_ID吗?

答案 2 :(得分: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';

这将指导用户通过facebook mobile登录m.facebook.com,并将用户重定向回redirect_uri,在这种情况下,我使用javascript window.location获取当前页面的网址。它将传回用户信息和将由facebook javascript SDK访问的令牌。

然后你可以像FB.ui那样提示facebook javascript SDK进行其他触摸动作,例如post to wall,它在对话框中显得非常甜蜜。

但是我会告诉你我必须在我的服务器上托管facebook all.js文件并手动将宽度从575px更改为290px以适合手机的屏幕。