0

我正在尝试实现一个自定义的 Google Hangouts 应用程序,并且试图将 Hangouts ID 从 Hangouts 应用程序传递到我自己的应用程序。环聊在 Google 的服务器上运行,所以我认为这是一个跨域问题。

我的自定义环聊应用程序正文中有此代码,该应用程序加载到整个环聊窗口的 iframe 中:

<body>
   <script>
   var postHangoutId = function(hangoutId) {
     console.log("in function(hangoutId)");

     $.post({
       url: "https://www.myserver.com", 
       crossDomain: true,             
       dataType: "json",                 
       data: {
         "hangouts_id" : hangoutId
       },

       success: function( response ) {
         console.log( response ); // server response
       }
     });
  }

  gapi.hangout.onApiReady.add(function() {
    console.log("gapi.hangout.onApiReady.add");
    postHangoutId(gapi.hangout.getHangoutUrl().split('/').pop());
  });


  window.onload = function() {
    console.log("hangouts load");
    console.log("onload getURL" + gapi.hangout.getHangoutUrl());
  }
</script>

我的应用

主要目标是获取环聊 ID 并将其发布到我的服务器。似乎什么都没有发生,所以我在代码中乱扔了console.log语句。显示标题“我的应用程序”,因此至少我知道自定义应用程序正在运行。

但是,当我在打开的环聊窗口上打开 Chrome 的开发者工具并转到控制台选项卡时,我看到的就是:

在此处输入图像描述

我已删除我的 AJAX 调用并重新运行应用程序以确保这些错误仍然存​​在,因此它们与 AJAX 调用无关。如您所见,我的日志都不在这里。我究竟做错了什么?

4

1 回答 1

1

您需要dataType在 jQuery Ajax Cross Domain Requests Javascript Security 中使用 JSONP 来阻止代码中的请求

$.post({
       url: "https://www.myserver.com", 
       crossDomain: true,             
       dataType: "jsonp",                 
       data: {
         "hangouts_id" : hangoutId
       },

       success: function( response ) {
         console.log( response ); // server response
       },error : function(err){console.log(err)}

     });
于 2014-06-27T04:41:04.517 回答