Yammer JavaScript SDK -“访问控制允许来源”问题

Posted

技术标签:

【中文标题】Yammer JavaScript SDK -“访问控制允许来源”问题【英文标题】:Yammer JavaScript SDK - 'Access-Control-Allow-Origin' issue 【发布时间】:2014-07-26 02:41:00 【问题描述】:

我正在尝试按照此处的说明发出 Yammer API 请求:https://developer.yammer.com/yammer-sdks/#javascript-sdk。当我运行这个例子时:

yam.getLoginStatus(
  function(response) 
    if (response.authResponse) 
      console.log("logged in");
      yam.platform.request(
        url: "https://www.yammer.com/api/v1/users.json",     //this is one of many REST endpoints that are available
        method: "GET",
        data:     //use the data object literal to specify parameters, as documented in the REST API section of this developer site
          "letter": "a",
          "page": "2",
        ,
        success: function (user)  //print message response information to the console
          alert("The request was successful.");
          console.dir(user);
        ,
        error: function (user) 
          alert("There was an error with the request.");
        
      );
    
    else 
      alert("not logged in")
    
  
);

我在 localhost 上执行此操作,但出现以下错误:

"XMLHttpRequest cannot load https://www.yammer.com/api/v1/users.json?letter=a&page=2&_=1401954073159. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access."

知道如何解决这个问题吗?

还有一件事。我无法在其中指定其他标头,因为此调用是作为“OPTIONS”而不是“GET”请求方法执行的。

希望有人对 Yammer 最新 API 有同样的问题并能够解决它。

谢谢

【问题讨论】:

这是排序的,Yammer 上的整个 JavaScript Origin 端有点不稳定,但最后我让它工作了 关于你如何使它工作的任何提示?也许你可以回答你自己的问题 嘿pcv。我在下一个答案中回答了这个问题:'实际的'错误'是由他们的错误文档引起的。 REST 端点是 api.yammer.com/api/ 而不是 www.yammer.com/api'。谢谢 嗯,这对我不起作用。无论我使用 www.yammer.com 还是 api.yammer.com,我都会收到错误消息 【参考方案1】:

确保更新您的 Yammer 应用程序 JS 起源以匹配您正在测试的环境主机名。

您可以在此链接中配置这些来源:

https://www.yammer.com/client_applications

点击您的应用程序,然后点击“基本信息”。

【讨论】:

实际的“错误”是由他们的错误文档引起的。 REST 端点是 api.yammer.com/api/ 而不是 www.yammer.com/api 感谢您的关注 - 我已更新文档以反映正确的 API 网址。【参考方案2】:

将主机名用作“api.yammer.com”而不是“www.yammer.com”。我认为文档需要更新,我会更新的。

或者,您可以使用 yam.platform.request('users.json') 代替 yam.request('https://api.yammer.com/api/v1/users.json'),您不必调整主机名。

【讨论】:

api.yammer.com 和 www.yammer.com 被浏览器视为两个不同的域,这可能会解释 CORS 错误消息。 【参考方案3】:

将您的应用程序网址添加到 yammer 应用程序基本信息中的“Javascript Origins”。

【讨论】:

我希望这还不算太晚,但是在我的应用程序的基本信息页面中,“Javascript Origins”的设置不存在。我在这里有什么遗漏吗?

以上是关于Yammer JavaScript SDK -“访问控制允许来源”问题的主要内容,如果未能解决你的问题,请参考以下文章

Yammer REST API - 如何从不同来源 (CORS) 获取数据?

Yammer REST API

如何在 Yammer 组上添加自定义托管元数据

Microsoft Ignite 2019:Yammer将在2020年发布的新功能预览

Office365 - Yammer注册App需要权限介绍

Office365 - Yammer注册App需要权限介绍