使用Disqus与cordova(登录不工作)

时间:2016-02-17 11:52:08

标签: html angularjs cordova disqus

我在cordova / angularjs移动应用中使用disqus时出现问题。

我的应用需要打开博客页面并使用disqus显示评论。

检查StackOverfolow,Google和Disqus的网站,我发现了我遵循的这个教程(https://help.disqus.com/customer/portal/articles/472096)。

首先,我创建了一个静态页面来打开像https://github.com/disqus/DISQUS-API-Recipes/blob/master/mobile/js/mobiletemplate.html这样的评论:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
</head>
<body>
    <div id="disqus_thread">
    </div>
    <script type="text/javascript">
        var params;
        var disqus_url;
        var disqus_title;
        var disqus_shortname;
        var disqus_identifier;
        window.onload = function () {
            var match,
            pattern = /\+/g,
            search = /([^&=]+)=?([^&]*)/g,
            decode = function (s) { return decodeURIComponent(s.replace(pattern, " ")); },
            query = window.location.search.substring(1);
            params = {};
            while (match = search.exec(query))
                params[decode(match[1])] = decode(match[2]);
            if (params["shortname"] === undefined || params["url"] === undefined || params["title"] === undefined) {
                alert("Required arguments missing");
            }
            else {
                loadComments(params["shortname"], params["url"], params["title"], params["identifier"]);
            }
        };
        function loadComments(shortname, url, title, identifier) {
            disqus_url = url;
            disqus_title = title;
            disqus_shortname = shortname;
            if (identifier !== undefined)
                disqus_identifier = identifier;
            else
                disqus_identifier = "";
            (function() {
                var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = false;
                dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
                (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
            })();
        }
    </script>
    <noscript>
        Please enable JavaScript to view the
        <a href="http://disqus.com/?ref_noscript">
            comments powered by Disqus.
        </a>
    </noscript>
    <a href="http://disqus.com" class="dsq-brlink">
        blog comments powered by
        <span class="logo-disqus">
            Disqus
        </span>
    </a>
</body>
</html>

然后我使用Cordova In App Browser(https://github.com/apache/cordova-plugin-inappbrowser)打开上面的页面,我按照教程中的建议处理登录

$cordovaInAppBrowser.open($scope.dsqUrl, '_blank', options).then(function(event) {
            $rootScope.$on('$cordovaInAppBrowser:loadstop', function(e, event) {
                console.log(event);
                if (event.url === 'http://disqus.com/next/login-success/') {
                   console.log("Login OK");
                    $cordovaInAppBrowser.open($scope.dsqUrl, '_blank', options).then(function(event) {
                        // success
                    }).catch(function(event) {
                        // error
                    });
                };
            });
        }).catch(function(event){ 
           //error
        });

结果是:

  • 打开评论页面

enter image description here

  • 点击登录
  • 填写登录表单

enter image description here

  • 重定向(自动)到评论页面

enter image description here

现在我能够发表评论,但评论页面要求我再次登录....

enter image description here

如果我尝试登录,因为Cookie,页面知道我已经登录并重定向到评论页面

问题是评论页面总是要求我登录。 如果我点击个人资料按钮,它会正确打开我的个人资料,以便登录成功完成

enter image description here

如果我关闭评论页面并重新打开它,同样的问题

您知道我该如何解决这个问题吗?

非常感谢您提前 Michele Riso

0 个答案:

没有答案