gpt4 book ai didi

javascript - Meteor.JS 从 Google API 问题中检索

转载 作者:行者123 更新时间:2023-11-30 13:10:17 25 4
gpt4 key购买 nike

哇哦,我还有更多关于 Meteor 的问题!我想要做的是从 YouTube Data API v3 中检索用户的 channel “片段”。它包含一个对象和一个名为 items 的数组,其中包含我在应用程序中需要的所有数据。我当前的客户端代码如下:

if (Meteor.user() && !Meteor.loggingIn()) {
Meteor.http.get("https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true&access_token=" + Meteor.user().services.google.accessToken, function (err, result) {
console.log(result.statusCode, result.data);
var retdata = result.data;
return retdata.items;
});
}

在客户端控制台输出:

200 
Object {kind: "youtube#channelListResponse", etag: ""eTr3dHIt5_K9qdGtRKL-5XdpiQI/4Lt-RSCeBy7D3VwX3c_uic6-LIM"", pageInfo: Object, items: Array[1]}

但是由于某些原因该函数返回undefined,这意味着我不能使用它的返回值。

为什么会这样?

最佳答案

那是因为您将返回数据的方法作为第二个参数传递给 http.get 作为异步回调,一旦数据从您调用的地址返回,该回调就会被调用.所以:

Meteor.http.get(url, callback);

不返回任何东西。相反,不是在回调中返回一个对象,而是将它设置在 get 之外的范围内的东西上:

if (Meteor.user() && !Meteor.loggingIn()) {
var url = "https://www.googleapis.com/youtube/v3/channels";
var params = {
access_token: Meteor.user().services.google.accessToken,
part: "snippet",
mine: "true"
};
Meteor.http.get(url, {params: params}, function (err, result) {
console.log(result.statusCode, result.data);
var retdata = result.data;
Session.set("myItems", retdata.items);
});
}

确保您还手动发布了 services.google.accessToken 字段,否则它不会在 Meteor.user() 上可用。并确保您在模板或响应式的地方执行所有这些操作,如果 Meteor.user() 尚不可用,Meteor 将在可用时重新运行代码。

关于javascript - Meteor.JS 从 Google API 问题中检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14116942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com