我在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
});
结果是:
现在我能够发表评论,但评论页面要求我再次登录....
如果我尝试登录,因为Cookie,页面知道我已经登录并重定向到评论页面
问题是评论页面总是要求我登录。 如果我点击个人资料按钮,它会正确打开我的个人资料,以便登录成功完成
如果我关闭评论页面并重新打开它,同样的问题
您知道我该如何解决这个问题吗?
非常感谢您提前 Michele Riso