我打算制作一个使用Youtube数据API v3的浏览器扩展程序。由于代码对用户是公开的,因此我无法在代码中使用我的API密钥。在这种情况下使用API的正确方法是什么?此外,由于API调用将来自用户的浏览器,是否还有其他方法可以在不使用API密钥的情况下获取数据?
答案 0 :(得分:2)
在API screen of Google Cloud Console上,创建新密钥或修改现有密钥以无限制。这样,任何人都可以使用此密钥在您发布请求时发出请求。 没有密钥时无法使用YouTube API(或者在使用OAuth时分别使用令牌)。您的客户每天最多可以消耗50.000.000个配额单位,之后您的应用程序将在当天的剩余时间内基本上中断,除非您购买更多配额。
但是,我不同意你不能(或者不应该发布)你的API密钥的声明;在某些情况下,这可能是非常需要的。
Web应用程序密钥曾经分为两组:服务器密钥和浏览器密钥,前者在Web应用程序的服务器上保密,而后者则发送到客户端以便在JavaScript中使用。可以将服务器密钥配置为仅从某些IP地址接受。这样,即使有人抓住你的钥匙,他们也无法使用它。浏览器密钥可以限制在指定的引荐来源,即您的Web应用程序的域(如在DNS中),因此它不会在您自己的其他站点上工作。
如今,服务器和浏览器密钥之间没有任何区别,它们只是简单地称为" API密钥"。这种结合对我来说非常有意义,因为这两种类型之间的唯一区别在于它们是如何被限制的。使用新的API密钥,人们仍然可以选择如何限制其使用 - 或者选择不限制密钥。
这是我们回到您的案例的地方:当然,可以发布密钥,同时不限制它。根据用户使用您的应用程序的数量(将来将使用它)以及有多少用户使用您自己的应用程序(您无法控制),5000万配额限制将适用于您或它不会。
那时还有责任。 您对使用API密钥进行的查询负责。这可能是YouTube在没有有效密钥的情况下不允许请求的原因之一:他们需要保持对其服务的控制,并且自然希望保护它免受DOS攻击。如果有人对你的钥匙恶作剧,那么你就是那个受到惩罚的人,通常是通过停用钥匙。