麻烦与谷歌API sessionParams不工作混合JavaScript &JQuery

Troubles with Google API sessionParams not working mixed JavaScript & JQuery

本文关键字:混合 JavaScript JQuery 工作 谷歌 API sessionParams 麻烦      更新时间:2023-09-26

我试图使这个代码工作,但它不工作,所以我需要你的帮助。我想要它检查是否有人登录到Gmail,如果是,然后强迫他使用Gmail作为邮件客户端,如果不是,然后使用默认的邮件客户端。我以前的版本在那里,它或多或少地工作: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代码,但不能发布它,因为我需要更多的声誉来放置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;
            }
        });