2010-09-30 44 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以适合手机屏幕。