Я занимаюсь разработкой веб-приложения с php-сервером, но есть планы сделать приложение для Android для мобильных пользователей. Проведя небольшое исследование, я обнаружил, что мне нужно написать бэкенд php как веб-сервис RESTFUL API для поддержки пользователей, использующих веб-сайт в своих браузерах на рабочем столе, и пользователей приложений для Android.
Нужно ли мне нужно написать что-то вроде этого imgur api для моего слабо классифицированного приложения "социальные сети"? Причина, по которой я спрашиваю об этом, заключается в том, что я не понимаю, почему мне нужно написать API для доступа к данным моих собственных пользователей. У меня сложилось впечатление, что такие apis написаны, чтобы позволить третьей стороне иметь доступ к информации о ваших пользователях, например, когда вы используете идентификатор пользователя / пароль facebook для входа в stackoverflow.
Безопасность является серьезной проблемой здесь. Приложения, в частности приложение для Android, будут работать, взаимодействуя с API, который я напишу, так что мне нужно использовать OAuth2 для аутентификации пользователей приложений для Android и давать им токены для доступа к их данным? Снова Я думал, что OAuth2 использовался, когда вы хотели предоставить сторонним приложениям доступ к некоторым данным ваших пользователей. Почему это лучше, чем просто аутентифицировать их по их электронному адресу и паролю, как если бы вы работали в браузере на своем компьютере? Или вы должны использовать OAuth2 для обоих?
Lastely продолжая приведенный выше пример imgur, рассмотрите этот URL-адрес, используемый для получения и изображения - https://api.imgur.com/3/image/{{imageHash}}
Если я напишу что-то похожее, чтобы сказать - получить информацию о пользователях после аутентификации, например. https://api.mysite.com/users/get/{{user_id}}
как я могу помешать миру узнать об этом, учитывая, что imgur написал свои API-интерфейсы, чтобы у всего мира был доступ к их материалам, но я пишу это только для своего приложения для Android.
Буду ли я писать URL в моем коде? может быть что-то вроде - usersJsonArray = new JSONObject("https://api.mysite.com/users/get/{{user_id}}").getJSONArray("user");
Кроме того, сервер https вернет json с данными пользователей на мобильный телефон Android. Насколько это безопасно? Я имею в виду, что сервер использует https, что означает, что никто не может видеть ответ json с сервера, верно?
Хорошо, вот так - http://acaasia.blogspot.com/2013/04/designing-secure-rest-web-api-without.html говорит о том, что вы можете добиться хорошей безопасности, следуя плану амазонок. Но мне трудно понять объяснение полностью. Кто-нибудь здесь хочет помочь с пониманием?
Это продолжает становиться интересным, теперь нам нужно рассмотреть HMAC против OAuth2. Печально то, что это просто абстрактные рекомендации без кода для ссылки.