通过聚会获取数据 API javascript
Getting data with Meetups API javascript
我正在尝试使用带有 API 密钥的聚会 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>
我遇到了这些错误:
Access to XMLHttpRequest at
'https://api.meetup.com/2/events?key=aKey&group_urlname=ny-tech&sign=true'
from origin 'http://127.0.0.1:5500' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested
resource. test.html:18
Cross-Origin Read Blocking (CORB) blocked
cross-origin response
https://api.meetup.com/2/events?key=aKey&group_urlname=ny-tech&sign=true
with MIME type application/json. See
https://www.chromestatus.com/feature/5629709824032768 for more
details.
我是 API 的新手,我对这里发生的事情感到困惑。我知道聚会 API 上的某些 API 请求需要 OAuth,我仍在努力掌握这一点。 但是,由于这是文档中用于 API 密钥而不是 OAuth 的示例,我希望它能与我的 API 密钥一起使用。当我简单地将它粘贴到浏览器中时请求有效,但当我使用 jQuery 获取它时无效。
文档中有几个地方谈到了 CORS:
Here 文档说
"you must be using OAuth to benefit from CORS."
和here
While we support key-based authentication for first-party
applications, we require OAuth for third-party applications that take
actions on behalf of other users.
我不代表其他用户采取行动。但我是第三方应用程序吗?什么是第一方应用程序?在什么情况下我提出的请求会起作用?
看起来 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>
我正在尝试使用带有 API 密钥的聚会 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>
我遇到了这些错误:
Access to XMLHttpRequest at 'https://api.meetup.com/2/events?key=aKey&group_urlname=ny-tech&sign=true' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. test.html:18
Cross-Origin Read Blocking (CORB) blocked cross-origin response https://api.meetup.com/2/events?key=aKey&group_urlname=ny-tech&sign=true with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details.
我是 API 的新手,我对这里发生的事情感到困惑。我知道聚会 API 上的某些 API 请求需要 OAuth,我仍在努力掌握这一点。 但是,由于这是文档中用于 API 密钥而不是 OAuth 的示例,我希望它能与我的 API 密钥一起使用。当我简单地将它粘贴到浏览器中时请求有效,但当我使用 jQuery 获取它时无效。
文档中有几个地方谈到了 CORS: Here 文档说
"you must be using OAuth to benefit from CORS."
和here
While we support key-based authentication for first-party applications, we require OAuth for third-party applications that take actions on behalf of other users.
我不代表其他用户采取行动。但我是第三方应用程序吗?什么是第一方应用程序?在什么情况下我提出的请求会起作用?
看起来 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>