将HTML表单提交与强制网络门户,facebook喜欢按钮和javascript结合使用

时间:2014-07-15 09:59:40

标签: javascript facebook pfsense

首先,我已经看到了一些具有相似意图的问题,但是他们的详细程度不够令人满意。

我正在尝试创建一个强制性门户网站身份验证页面,用户在单击某个Facebook页面的“赞”按钮时进行身份验证。我正在使用pfsense作为强制门户网站,目前,除了一些奇怪的问题外,其中大部分已经到位。

以下是身份验证页面的完整代码:

<!DOCTYPE html>
<html>
<head>
    <title>Wifi Authentication</title>
</head>



<body>
    <script>

        // The following two blocks
        // initializes Facebook SDK
        window.fbAsyncInit = function() {
            FB.init({
                appId      : '290884437749394',
                status     : true,
                cookie     : true,
                xfbml      : true,
                version    : 'v2.0'
            });
        };

        (function(d, s, id){
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) {return;}
            js = d.createElement(s); js.id = id;
            js.src = "//connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));

    </script>
    <DIV ALIGN=CENTER>
        <FONT COLOR="#ff3333" SIZE=+5>W</FONT>
        <FONT COLOR="#cc6633" SIZE=+5>e</FONT>
        <FONT COLOR="#999900" SIZE=+5>l</FONT>
        <FONT COLOR="#33cc33" SIZE=+5>c</FONT>
        <FONT COLOR="#339999" SIZE=+5>o</FONT>
        <FONT COLOR="#3366cc" SIZE=+5>m</FONT>
        <FONT COLOR="#0033ff" SIZE=+5>e</FONT>
        <p>UROP2014</p>
    </DIV>

    <div class="fb-like" data-href="https://developers.facebook.com/docs/plugins/" data-layout="button" data-action="like" data-show-faces="false" data-share="false">
    </div>

    <form name="myform" method="post" action="$PORTAL_ACTION$"><input name="redirurl" type="hidden" value="$PORTAL_REDIRURL$"> <input name="accept" type="submit" value="Continue">
    </form>
    <script type="text/javascript">
        window.onload = function() {
            FB.Event.subscribe("edge.create", function(o) {
                               alert("!")
                               document.myform.submit();
                               alert("?")

                               });
            FB.Event.subscribe("edge.remove", function(o) {
                               alert("!")
            });
        };
    </script>       
</body>
</html>

好的,这是一些奇怪的观察:

  1. 页面上的“like”按钮非常随机。有时它需要很长时间才能出现,有时它会立刻出现,有时它永远不会出现。我认为这与强制网络门户或连接到Facebook服务器的浏览器有关。显然我们已经允许与facebook相关的主机名,所以我们的服务器可以与它通信,但我们无法理解为什么这样的按钮是如此不稳定。

  2. 单击“继续”按钮(类型=&#39;提交&#39;输入)时,身份验证可以正常工作,但是当通过like-button事件提交表单时,身份验证不起作用( FB.Event.subscribe位)。具体来说,行document.myform.submit()似乎与单击提交按钮有不同的效果。符合这一点:

  3. 我尝试将代码更改为:

    <script type="text/javascript">
        window.onload = function() {
            FB.Event.subscribe("edge.create", function(o) {
                               alert("!")
                               document.getElementById("accept").click();
                               alert("?")
    
                               });
            FB.Event.subscribe("edge.remove", function(o) {
                               alert("!")
            });
        };
    </script>
    
  4. 并单击了like按钮,现在代码在document.getElementById(&#34; accept&#34;)之后没有继续。单击();意味着下一行警报(&#34;?&#34;)不会发生。老实说,我发现这非常奇怪且不可预测。

    有人能帮助我吗?请再向我询问一下。

0 个答案:

没有答案