Foursquare API 在 javascript 中公开秘密

Foursquare API exposing secret in javascript

我想在我的网站中集成 foursquare API,但我对 API 安全性不是很熟悉,所以我想确保我做的是正确的。

我想搜索文档所述区域中的场地:

https://api.foursquare.com/v2/venues/search
  ?client_id=CLIENT_ID
  &client_secret=CLIENT_SECRET
  &v=20130815
  &ll=40.7,-74
  &query=sushi

然而,使用 javascript,我对这样在我的代码中公开客户端机密感到不舒服,因为如果有人查看我的源代码,他们会看到 client_id 和 client_secret 这使得使用我的代码验证自己成为可能:

https://developer.foursquare.com/overview/auth

这不是一样吗,"hey look at my source code, my username = "someusername" 而我的密码是 "somepassword"?

"client_secret" 不应该像它说的那样保密吗?还是我看错了?

我认为问题在于您正在尝试使用 Javascript 访问 Foursquare API,它是在客户端执行的,所以是的,任何使用您网站的人都可以使用稍微调查一下,看看你正在使用的密钥,这是你绝对不想做的事情。

解决这个问题的方法是不使用在客户端执行的代码访问 API。无论您在服务器端使用何种语言构建网站,都应该是访问 API(使用您设置的身份验证凭据)然后 returns API 结果的代码调用其余代码。

或者,您可以让用户使用 Foursquare 进行身份验证并获取访问令牌,然后您可以在特定于用户的 API 调用中使用该令牌,如果这些调用是在客户端上执行的,则无关紧要边。我认为这是使用该方法的文档中的相关页面:https://developer.foursquare.com/overview/auth#access