【问题标题】:Getting the error "ApiKey invalid" for hotel live prices获取酒店实时价格的错误“ApiKey 无效”
【发布时间】:2016-09-07 16:36:50
【问题描述】:

我正在尝试获取当前酒店价格的列表,但我的 API 密钥无法正常工作。我已经用了几天了,所以我知道它不是太新。我什至尝试了文档中的示例(在确定日期之后):

http://partners.api.skyscanner.net/apiservices/hotels/liveprices/v2/UK/EUR/en-GB/27539733/2016-12-04/2016-12-10/2/1?apiKey=myKey

虽然它适用于演示密钥,但不适用于我的。我还在用于测试 Python 的 ec2 micro 上进行了尝试,并得到了 u'{"errors":["ApiKey invalid"]}':

的响应
SKY_SCAN_URL = "http://partners.api.skyscanner.net/apiservices/hotels/liveprices/v2/"
sky_key = get_sky_scan_key()
def get_hotels(request):
        entityid = request.GET['entityid']
        checkindate = date_formatter(request.GET['start'])
        checkoutdate = date_formatter(request.GET['end'])
        rooms = request.GET['rooms']
        guests = request.GET['guests']
        FINAL_SKY_URL = "%s/%s/%s/%s/%s/%s/%s/%s/%s/?apiKey=%s" % (
            SKY_SCAN_URL, 'US', 'USD', 'en-US', entityid, checkindate, checkoutdate, guests, rooms, sky_key)

        sky_response = requests.get(FINAL_SKY_URL)

此函数输出一个带有如下 URL 的 get 请求: http://partners.api.skyscanner.net/apiservices/hotels/liveprices/v2//US/USD/en-US/20.7983626,-156.3319253-latlong/2016-09-07/2016-09-14/1/1/?apiKey=myKey

任何关于可能出现的问题的建议都很棒,谢谢!

编辑: 更具体地说,我正在寻找我的 API 密钥无效的原因。我不熟悉 skyscan,虽然我通过单击 travel api 从 skyscanner 仪表板添加了一个应用程序,并将密钥复制到我的项目中并直接复制到有效的 url,但我的密钥显示为错误。我需要考虑任何其他步骤或事项吗?

【问题讨论】:

  • 在请求之前尝试打印完整的 URL。检查是否可以直接在浏览器上打开。
  • @majidarif 我已经这样做了,但也没有运气。我继续在刚才的问题中添加了它,以供任何可能注意到它的格式化方式是否存在问题的人使用。
  • 他们的文档有点误导,他们谈论的是Query string,但实际上是 url 参数。添加了答案。

标签: skyscanner


【解决方案1】:

我不知道您是如何创建 URL 的,但它似乎不应该以这种方式构建。 (很可能是由于他们的误导性文件)

这个:

http://partners.api.skyscanner.net/apiservices/hotels/liveprices/v3/?apiKey=myKey&checkoutdate=2016-09-14&checkindate=2016-09-07&currency=USD&rooms=1&entityid=20.7983626%2C-156.3319253-latlong&local=en-US&market=US&guests=1

应该是:

http://partners.api.skyscanner.net/apiservices/hotels/liveprices/v3/US/USD/en-US/20.7983626,-156.3319253-latlong/2016-09-07/2016-09-14/1/1/?apiKey=myKey

你的代码应该是这样的:

SKY_SCAN_URL = "http://partners.api.skyscanner.net/apiservices/hotels/liveprices/v3/"
FINAL_URL = "%s/%s/%s/%s/%s/%s/%s/%s/%s/?apiKey=%s" % (SKY_SCAN_URL, market, currency, locale, entityid, checkindate, checkoutdate, guests, rooms, apiKey)

sky_response = requests.get(FINAL_URL)

我还建议你做一些测试here

【讨论】:

  • 谢谢,我刚刚插入!这确实解决了我一半的问题,虽然它适用于演示密钥,但我仍然收到无效的 API 密钥错误。
  • 那么您可能使用了无效的 api 密钥。仔细检查。
  • 您是否请求了 API 密钥?您可以从以下地址申请:en.business.skyscanner.net/en-gb/contact
  • 我确实从他们那里得到了它,我什至做了第二个,以确保没有什么奇怪的问题。
  • 那我不能再帮你了,因为只有你知道你的 API 密钥。我唯一的建议是仔细检查您的 api 密钥是否有效(与演示密钥类似)。或者问题出在get_sky_scan_key()
【解决方案2】:

截至 17 天前,来自他们的帮助网站 - https://support.business.skyscanner.net/hc/en-us/articles/209452689-Why-is-my-API-key-returning-no-results-for-hotels-

“我们的酒店 API 目前正在重新设计,目前无法访问。对于任何不便,我们深表歉意,当新 API 准备好使用时,我们将更新 Skyscanner for Business 网站,因此请返回那里查看更新。 "

不清楚什么时候会改变。

【讨论】:

    【解决方案3】:

    自 2017 年 4 月起,skyScanner 开始重新设计他们的酒店 API,从而停止所有正在进行的对 LIVE Pricing API 的 API 调用: https://support.business.skyscanner.net/hc/en-us/articles/209452689-Why-is-my-API-key-returning-no-results-for-hotels- 酒店和航班缓存定价和浏览服务仍然有效,但我不确定这是否足以满足您的业务案例。

    【讨论】:

      【解决方案4】:

      Skyscanner 似乎最近更新了他们的酒店 API,文档可以在这里找到:https://skyscanner.github.io/slate/#hotels-live-prices

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-11
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 2018-06-02
        相关资源
        最近更新 更多