制作快速静态登录页面后,我们注意到facebook登录无效。它只是弹出一个框,然后在允许登录或拒绝之前自动重定向。
请查看http://www.gemroc.com/landing/index.html
这是我们的目标网页。你可以看到我在那里遇到的问题。
同样,我们将fb源代码复制到此页面中。我猜这就是问题所在。
这是我怀疑可能是因为它是从源代码中复制的原因。
<script type="text/javascript">
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "https://connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
window.fbAsyncInit = function() {
FB.init({
appId : 'OurAppID',
status : true,
cookie : true,
xfbml : true
});
Event.observe(window, 'load', function() {
Event.fire(document, 'fbinit:ready',{});
});
};
</script>
<script type="text/javascript">
Event.observe(document, 'fbinit:ready', function(event){
mpFBConnect.init("https://www.facebook.com/dialog/oauth?client_id=430913623675901&redirect_uri=http%3A%2F%2Fwww.gemroc.com%2Ffacebookconnect%2Flogin%2F&state=a728aaf88633a0e24b793630a1b01194&scope=email%2Cpublish_stream&display=popup");
});
mpFBConnect.facebookconnectform = '<form id="facebookconnectform" method="post" action="https://www.gemroc.com/facebookconnect/login/">' +
'<input type="hidden" name="return" value="aHR0cDovL3d3dy5qamV3ZWwuY29tLw==" />' +
'<input type="hidden" name="fbconnecttype" value="form" />' +
'</form>';
</script>
答案 0 :(得分:1)
您是否在developer.facebook.com上通过Facebook创建了一个应用,并在您的脚本中输入了您的应用ID和密钥?
也不要忘记将您的网址从测试服务器更改为开发服务器 - 我已经被抓住了一次
修改强>
通过右键单击并查看源代码,您似乎只是复制并粘贴了输出HTML。这与运行时不同,将使用更多信息创建代码段。
搜索生成文件中的代码并改为使用
答案 1 :(得分:0)
如果你能以一种非常简单和首选的方式进行 Facebook登录,你会做出如此复杂的流程吗?
在window.fbAsyncInit
中,在FB.init
代码之后,写下这个 -
FB.login(function(response) {
if (response.authResponse) {
// The person logged into your app
} else {
// The person cancelled the login dialog
}
});
就是这样。如果您甚至不想每次都登录,并在会话中自动登录用户,您可以在此处使用以下代码:https://developers.facebook.com/docs/facebook-login/login-flow-for-web/