Google API sessionParams 的问题不能混合使用 JavaScript & JQuery

Troubles with Google API sessionParams not working mixed JavaScript & JQuery

我正在尝试使这段代码工作,但它不工作,所以我需要你的帮助。 我希望它检查是否有人登录到 Gmail,如果是,则强制他使用 Gmail 作为 mailto 客户端,如果没有,则使用默认的 mailto 客户端。 我以前的版本在那里,它或多或少地工作: http://www.pazaak.nazwa.pl/projekty/gmail/index2.html

但我被要求重写为jQuery。我创建了这样的东西:

(function () {
      var po = document.createElement("script");
      po.type = "text/javascript"; po.async = true;
      po.src = "https://apis.google.com/js/client:plusone.js?onload=OnLoadCallback";
      var s = document.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(po, s);
})();

$( document ).ready(function(){
var sessionParams = {
       'client_id': 'myclientID',
       'session_state': null
   }
  $( ".mail2" ).click(function(e){
    console.log('test');
  gapi.auth.checkSessionState(sessionParams, $(function(stateMatched) {
    if (stateMatched == true) {
      console.log('jfgh');
      return true;
      } else {
        e.preventDefault();
        console.log('g');
        window.open("https://mail.google.com/mail/u/0/#inbox?compose=new");
        return false;
      }
    }));
});
});

然而还是有些不对劲。我怀疑主要问题是 SessionParams 无法正常工作。我在网上找到了另一个带有 SessionParams 的代码,但不能 post 因为我需要更多的声誉才能放置 2 个链接。正如我上面所说,我需要在 jQuery.

中包含一些代码

您将回调包装在 $() 中,这是不正确的:

gapi.auth.checkSessionState(sessionParams, function (stateMatched) {
            if (stateMatched == true) {
                console.log('jfgh');
                return true;
            } else {
                e.preventDefault();
                console.log('g');
                window.open("https://mail.google.com/mail/u/0/#inbox?compose=new");
                return false;
            }
        });