0

我想将我的帖子分享到Facebook,所以我写了代码。但是当我点击我的按钮时,FB.getLoginStatus第一次响应“未知”给response.status,但是如果我再次点击,则响应“已连接”。 这里是我的代码:FB.getLoginStatus在第二次点击时响应(response.status = connected)

$("#fb_share").on("click",function(){ 
    var poi_id = $("#fb_share").attr('data-id'); 
    FB.getLoginStatus(function(statusResp) { 
    console.log(statusResp); 
    if (statusResp.status === 'connected') { 
     FB.api('/me?fields=email', function(response) { 
      if(response.email){ 
       sendEventInvite(statusResp,response,poi_id); 
      }else{ 
       FBLoginFirst(poi_id,statusResp,"detail"); 
      } 
     }); 

    }else{ 
console.log("fb_permission_scope---"+fb_permission_scope); 
     FBLoginFirst(); 
    } 
}); 
}); 

这就是我的console.log得到

Object { status="unknown", authResponse=null} 

这是我得到的第二次点击

Object { status="connected", authResponse={...}}` 
+0

香港专业教育学院不使用Facebook的API,但你怎么验证反对呢?在点击按钮之前,你确定你的身份验证过吗?如果你添加了一些信息,可以帮助其他人使用它。 – ste2425

+0

是的!我在页面的最顶端调用window.fbAsyncInit函数,它也给出了结果以及 –

回答

0

您有一个额外的等号(=)在你的if语句中。将某些事物与布尔值进行比较时,三个等号(===)是正确的操作符。

尝试这样的:

$("#fb_share").on("click",function(){ 
    var poi_id = $("#fb_share").attr('data-id'); 
    FB.getLoginStatus(function(statusResp) { 
    console.log(statusResp); 
    if (statusResp.status == 'connected') { 
     FB.api('/me?fields=email', function(response) { 
      if(response.email){ 
       sendEventInvite(statusResp,response,poi_id); 
      }else{ 
       FBLoginFirst(poi_id,statusResp,"detail"); 
      } 
     }); 

    }else{ 
console.log("fb_permission_scope---"+fb_permission_scope); 
     FBLoginFirst(); 
    } 
}); 
}); 
+0

!感谢您的响应,但FB.getLoginStatus上的第三行出现错误。它在第一次尝试时没有返回值,但在第二次响应时,一切正常。 –

+0

'==='用于严格的相等性检查,不直接检查布尔值。它会停止浏览器尝试强制操作员两侧的值。 – ste2425

+0

我一直认为'==='不能用于检查字符串值,但据说我错了。一些编程语言比其他编程语言更宽容。 –