无用户身份验证Foursquare API“缺少访问凭据” - 400错误

时间:2018-06-05 08:02:54

标签: javascript reactjs authentication es6-promise foursquare

有点奇怪。我正在构建一个与Foursquare API交互的React js应用程序,主要是为了了解React js和API。

我正在使用Foursquare获取Venue信息,这很好用。我也想用它来获取有趣的场地照片。

处理对场地的原始呼叫的方法如下。我只是把它放在这里提供一个控件,因为这工作正常。它返回我在应用程序中处理的场地信息,没有问题:

getVenues: (searchTerm) => {

    const urlToFetch = 

${urlExplore}${searchTerm}&limit=10&client_id=${clientId}&client_secret=${clientSecret}&v=20180602;

    return fetch(urlToFetch).then( response => {
         return response.json();
    }).then( jsonResponse => {
        if (jsonResponse.response.groups[0].items) {
            return jsonResponse.response.groups[0].items.map(item => (
                {
                    id: item.venue.id,
                    name: item.venue.name,
                    // blah
                }
            ));                

        } else {
            return [];
        }

    })

}

到目前为止,这么好,它运作良好。但是,当我尝试访问照片端点的相同方法时,该方法返回一系列包含meta的对象,其中包含:

代码:400 errorDetail:“缺少访问凭据。请参阅     https://developer.foursquare.com/docs/api/configuration/authentication     细节。”     errorType:“invalid_auth”

我只想说所提供的链接上的信息实际上没有多大帮助: - (

我用来获取照片信息的方法是:

getVenuePhotos: (venueId) => {

    const fetchPhotosURL = `${urlPhotos}${venueId}/photos&limit=10&client_id=${clientId}&client_secret=${clientSecret}&v=20180602`;

    return fetch(fetchPhotosURL).then( response => {
         return response.json();
    }).then( jsonResponse => {
        console.log(jsonResponse);
        //blah - removed to save space - see method above, it's pretty much the same
    })

}

...两者都存储在反应组件导入的单独文件中的对象中。

url vars解析如下(星号是我的补充):

fetchVenuesURL: https://api.foursquare.com/v2/venues/explore?near=london&limit=10&client_id=**** &client_secret=****&v=20180602

fetchPhotosURL: https://api.foursquare.com/v2/venues/4ac518eff964a52064ad20e3/photos&limit=10&client_id=**** &client_secret=****&v=20180602

有谁知道为什么会这样?

提前致谢

1 个答案:

答案 0 :(得分:1)

我认为您的网址中存在拼写错误。

替换

${urlPhotos}${venueId}/photos&limit=10&client...

${urlPhotos}${venueId}/photos?limit=10&client...