API Foursquare раскрывает секрет в javascript

Я хочу интегрировать API Foursquare на свой веб-сайт, но я не очень хорошо разбираюсь в безопасности 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

Разве это не то же самое, что: «Эй, посмотрите на мой исходный код, мое имя пользователя = «someusername» и мой пароль «somepassword»?

Разве «client_secret» не должен оставаться секретным, как говорится? Или я неправильно на это смотрю?


person randomizer    schedule 14.09.2015    source источник
comment
Эй, вы нашли другой способ скрыть секрет, кроме описанного ниже (маршрутизация через API)?   -  person David Dal Busco    schedule 30.08.2016
comment
Нет, я этого не сделал. Не удалось найти лучший/безопасный способ, чем описанный ниже.   -  person randomizer    schedule 01.09.2016
comment
спасибо за отзыв, я тоже :(   -  person David Dal Busco    schedule 01.09.2016


Ответы (1)


Я думаю, проблема в том, что вы пытаетесь получить доступ к API Foursquare с помощью Javascript, который выполняется на стороне клиента, так что да, любой, кто использует ваш веб-сайт, может после небольшого расследования увидеть секретный ключ, который вы использование, что вы определенно не хотите делать.

Способ обойти это — не обращаться к API с помощью кода, который выполняется на стороне клиента. Какой бы язык вы ни использовали для создания веб-сайта на стороне сервера, это должен быть код, который обращается к API (используя настроенные вами учетные данные), а затем возвращает результаты вызова API остальной части кода.

В качестве альтернативы вы можете заставить пользователей пройти аутентификацию с помощью Foursquare и получить токен доступа, который затем можно использовать в пользовательских вызовах API, и не имеет значения, выполняются ли они на стороне клиента. Я думаю, что это соответствующая страница в документации для использования этого метода: https://developer.foursquare.com/overview/auth#access

person mrcheshire    schedule 14.09.2015
comment
Спасибо, похоже, это единственное решение для получения данных из моего API, однако этот способ намного медленнее, чем прямой вызов API. - person randomizer; 14.09.2015