【问题标题】:Getting data with Meetups API javascript使用 Meetups API javascript 获取数据
【发布时间】:2019-06-22 22:30:08
【问题描述】:

我正在尝试通过 API 密钥使用 Meetups API,但我被 CORS 阻止了。

我正在使用见面会给出的示例:https://api.meetup.com/2/events?key=mykey&group_urlname=ny-tech&sign=true,用我的 API 密钥替换 API 密钥。这个例子来自here.

这是我的代码(我拿出我的钥匙并用 替换它):

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<button id="find">find</button>
 <script>
        $("#find").click( function(){
          $.getJSON("https://api.meetup.com/2/events?key=<key>&group_urlname=ny-tech&sign=true", function(data){
            console.log(data);
          });
        });
</script>

我收到以下错误:

访问 XMLHttpRequest 在 'https://api.meetup.com/2/events?key=aKey&group_urlname=ny-tech&sign=true' 来自原点 'http://127.0.0.1:5500' 已被 CORS 策略阻止: 请求中不存在“Access-Control-Allow-Origin”标头 资源。 test.html:18

跨域读取阻塞 (CORB) 被阻止 跨域响应 https://api.meetup.com/2/events?key=aKey&group_urlname=ny-tech&sign=true MIME 类型应用程序/json。看 https://www.chromestatus.com/feature/5629709824032768 了解更多 详情。

我是 API 新手,我对这里发生的事情感到困惑。我知道 Meetup 的 API 上的一些 API 请求需要 OAuth,我仍在努力掌握。 但是,由于这是文档中用于 API 密钥的示例,而不是 OAuth,因此我希望它可以与我的 API 密钥一起使用。当我将请求简单地粘贴到浏览器中时,该请求有效,但不是当我使用 jQuery 来抓取它时。

文档中有几个地方谈到了 CORS: Here 文档说

“您必须使用 OAuth 才能从 CORS 中受益。”

还有here

虽然我们支持第一方基于密钥的身份验证 应用程序,我们需要 OAuth 用于第三方应用程序 代表其他用户执行操作。

我没有代表其他用户采取行动。但我是第三方应用程序吗?什么是第一方应用程序?在什么情况下我提出的请求会起作用?

【问题讨论】:

  • Access to XMLHttpRequest blocked by CORS policy - 绕过它的最简单方法是使用 后端 加载您的应用程序。将文件移动到 xampp 文件夹或从 NodeJS 加载它可以很简单。对于您的 HTTP GET 请求部分问题,您有 read this 吗?

标签: javascript jquery api cors meetup


【解决方案1】:

看起来 Meetup 只允许带有通过 OAuth 身份验证的请求的 CORS – reading this issue

一种方法是使用jsonP。获得生成的 API 签名 URL 后,您可以添加 ?callback=? 作为第一个参数,它会为您工作。

下面是一个例子

$("#find").click(function() {
  $.getJSON("https://api.meetup.com/2/events?callback=?&offset=0&format=json&limited_events=False&group_urlname=ny-tech&page=200&fields=&order=time&desc=false&status=upcoming&sig_id=SIGID&sig=SIG", function(data) {
    console.log(data);
  }).fail(function(jqxhr, textStatus, error) {
    console.log("error", textStatus);
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<button id="find">find</button>

【讨论】:

  • 谢谢。我还没有尝试过,因为在申请获取 OAuth API 签名 URL 之前我需要做一些事情,但我最终会尝试。感谢您从我的 OP 上取下钥匙。在您引起我注意后,我停用了钥匙。
猜你喜欢
  • 2019-10-16
  • 2019-02-16
  • 2021-10-14
  • 2021-12-19
  • 2014-09-18
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 2021-11-28
相关资源
最近更新 更多