我在计算如何为移动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以适合手机屏幕。