Javascript Phonegap/cordova社交共享插件,重复推文问题

Javascript Phonegap/cordova社交共享插件,重复推文问题,javascript,twitter,phonegap-plugins,cordova-plugins,Javascript,Twitter,Phonegap Plugins,Cordova Plugins,我正在使用社交共享插件将我的移动应用程序中的消息和图片共享到facebook和twitter, 如果共享成功,应用程序将显示“共享成功”警报;如果插件显示任何错误消息,应用程序将显示“共享取消”。 对于facebook来说,它就像一个魔咒,但在twitter上有一个问题。除了重复的tweet(人们多次共享同一条tweet)之外,它在所有情况下都可以正常工作。当插件满足所有条件(互联网连接、用户认证、有效消息)时,都会触发警报,但手机中的twitter应用程序会抛出警报“重复tweets”错误延迟

我正在使用社交共享插件将我的移动应用程序中的消息和图片共享到facebook和twitter,
如果共享成功,应用程序将显示“共享成功”警报;如果插件显示任何错误消息,应用程序将显示“共享取消”。
对于facebook来说,它就像一个魔咒,但在twitter上有一个问题。除了重复的tweet(人们多次共享同一条tweet)之外,它在所有情况下都可以正常工作。当插件满足所有条件(互联网连接、用户认证、有效消息)时,都会触发警报,但手机中的twitter应用程序会抛出警报“重复tweets”错误延迟。这里的任何人请在触发警报之前帮助我找到该错误消息

function shareViaTwitter(id, message, image, url) {
    canShareViaTwitter();
    message = message.replace(/<br *\/?>/gi,'\n');

var successmessage  = window.localStorage.getItem('canshareTwitsuccess');
var errormessage    = window.localStorage.getItem('canshareTwiterror');

if(errormessage != '' && errormessage != 'null' && errormessage != null)
{
    navigator.app.loadUrl('https://play.google.com/store/apps/details?id=com.twitter.android&hl=en', { openExternal:true });
    reloadPage();
}
else
{   
    if(navigator.onLine) {
        var isAndroid = /android/i.test(navigator.userAgent.toLowerCase());

        if(isAndroid) {
            message = (message) ? message : null;
            image = (image) ? image : null;
            url = (url) ? url : null;

            window.plugins.socialsharing.shareViaTwitter(message, image, url, function(msg){}, function(msg){});
            $("#sharingText").html("Shared Successfully");
            $('#sharing-sucess-trigger').trigger('click');
        }
    } else {
        $("#sharingText").html("Shared Failed! \nNo Network Connection");
        $('#sharing-sucess-trigger').trigger('click');
    }
    reloadPage();
}
}

function canShareViaFacebook()
{
    //alert("canshare")
    window.plugins.socialsharing.canShareVia('com.facebook.katana', 'msg', null, null, null, function(fbsuccess){window.localStorage.setItem("canshareFbsuccess", fbsuccess);}, function(fberror){window.localStorage.setItem("canshareFberror", fberror);});
}

function canShareViaTwitter()
{
    //alert("canshare")
    window.plugins.socialsharing.canShareVia('twitter', 'msg', null, null, null, function(twitsuccess){window.localStorage.setItem("canshareTwitsuccess", twitsuccess);}, function(twiterror){window.localStorage.setItem("canshareTwiterror", twiterror);});
}
函数shareViaTwitter(id、消息、图像、url){
canShareViaTwitter();
message=message.replace(//gi,'\n');
var successessage=window.localStorage.getItem('canShareTwitsAccess');
var errormessage=window.localStorage.getItem('CanShareTwiError');
如果(errormessage!=''&&errormessage!='null'&&errormessage!=null)
{
navigator.app.loadUrl('https://play.google.com/store/apps/details?id=com.twitter.android&hl=en“,{openExternal:true});
重新加载页面();
}
其他的
{   
if(navigator.onLine){
var isAndroid=/android/i.test(navigator.userAgent.toLowerCase());
if(isAndroid){
消息=(消息)?消息:空;
图像=(图像)?图像:空;
url=(url)?url:null;
window.plugins.socialsharing.shareViaTwitter(消息、图像、url、函数(msg){}、函数(msg){});
$(“#共享文本”).html(“成功共享”);
$(“#共享成功触发器”).trigger('click');
}
}否则{
$(“#sharingText”).html(“共享失败!\n无网络连接”);
$(“#共享成功触发器”).trigger('click');
}
重新加载页面();
}
}
函数canShareViaFacebook()
{
//警报(“canshare”)
window.plugins.socialsharing.canShareVia('com.facebook.katana','msg',null,null,null,function(fbsuccess){window.localStorage.setItem(“cansharefbsucces”,fbsuccess);},function(fberror){window.localStorage.setItem(“cansharefberr”,fberror);});
}
函数canShareViaTwitter()
{
//警报(“canshare”)
window.plugins.socialsharing.canShareVia('twitter','msg',null,null,null,function(twitsuccess){window.localStorage.setItem(“canshareTwitsuccess”,twitsuccess);},function(twitror){window.localStorage.setItem(“cansharetwitror”,twitror);});
}

此代码非常奇怪。如果您与以下用户共享推文:

socialsharing.shareViaTwitter(message, file, url, successCallback, errorCallback)
如果你想告诉用户tweet失败了,你可以使用errorCallback来提醒用户tweet失败了

function errorCallback(msg){
    alert(msg);
}
--附加代码--

函数shareViaTwitter(id、消息、图像、url){
message=message.replace(//gi,'\n');
canShareViaTwitter(函数(){
if(navigator.onLine){
var isAndroid=/android/i.test(navigator.userAgent.toLowerCase());
if(isAndroid){
消息=(消息)?消息:空;
图像=(图像)?图像:空;
url=(url)?url:null;
window.plugins.socialsharing.shareViaTwitter(消息、图像、url、函数(msg){}、函数(msg){});
$(“#共享文本”).html(“成功共享”);
$(“#共享成功触发器”).trigger('click');
}
}
否则{
$(“#sharingText”).html(“共享失败!\n无网络连接”);
$(“#共享成功触发器”).trigger('click');
}
//为什么??
重新加载页面();
},
函数(){
navigator.app.loadUrl('https://play.google.com/store/apps/details?id=com.twitter.android&hl=en“,{openExternal:true});
重新加载页面();
});
}
函数canShareViaTwitter(successCallback,errorCallback)
{
//警报(“canshare”)
window.plugins.socialsharing.canShareVia('twitter','msg',null,null,null,function(twitsuccess){window.localStorage.setItem(“canshareTwitsuccess”,twitsuccess);successCallback();},function(twitror){window.localStorage.setItem(“cansharetwitror”,twitror);errorCallback()});
}

我最近通过这个博客发现,twitter返回的错误无法由客户端处理。还有其他解决方案吗?只需忽略用于会话处理和类似内容的本地存储部分,问题是“twitter永远不允许类似的推文”“这两个请求都是异步的,因此当您调用canShareVia时,实际上没有检查错误,因为错误检查代码将在设置任何错误消息之前运行。是的,没错,但canShareVia在进入twitter应用程序后实际上没有检查错误,这个错误是由于twitter的垃圾邮件预防机制导致的,所以它不会在CanShareVia中被捕获。那么为什么你不能直接调用shareViaTwitter呢?你为什么需要canShareVia?我不认为这是你打电话之前必须检查的一个问题(根据这里的文档:)
function shareViaTwitter(id, message, image, url) {
    message = message.replace(/<br *\/?>/gi,'\n');
    canShareViaTwitter(function(){
        if(navigator.onLine) {
            var isAndroid = /android/i.test(navigator.userAgent.toLowerCase());

            if(isAndroid) {
                message = (message) ? message : null;
                image = (image) ? image : null;
                url = (url) ? url : null;

                window.plugins.socialsharing.shareViaTwitter(message, image, url, function(msg){}, function(msg){});
                $("#sharingText").html("Shared Successfully");
                $('#sharing-sucess-trigger').trigger('click');
            }
        }
        else {
            $("#sharingText").html("Shared Failed! \nNo Network Connection");
            $('#sharing-sucess-trigger').trigger('click');
        }
        //why?
        reloadPage();
    },
    function(){
        navigator.app.loadUrl('https://play.google.com/store/apps/details?id=com.twitter.android&hl=en', { openExternal:true });
        reloadPage();
    });
}
function canShareViaTwitter(successCallback, errorCallback)
{
    //alert("canshare")
    window.plugins.socialsharing.canShareVia('twitter', 'msg', null, null, null, function(twitsuccess){window.localStorage.setItem("canshareTwitsuccess", twitsuccess);successCallback();}, function(twiterror){window.localStorage.setItem("canshareTwiterror", twiterror);errorCallback()});
}