Autenticação de um aplicativo em uma API

Estou fazendo uma API RESTful e um aplicativo que vai consumir essa API, a principio o usuário não precisa fazer login no aplicativo para ver as informações, porem eu quero proteger a API, para que não façam requisições fora do aplicativo. Qual é a melhor forma de implementar isso?

Sugiro que use oauth2 e token, pode ser com ou sem jwt.

@darlan_machado Pelo o que eu já pesquisei de oauth 2, é esse mecanismo de fazer o login com o Facebook ou Google, mas na minha aplicação o usuário não precisa fazer login, é por isso que eu tenho duvida. Quero proteger a API de requisições que não se origina do aplicativo.

Implementar o login no aplicativo não seria viável ?

Por exemplo, digamos que o usuário acabou de baixar seu App, ele realiza o login uma única vez, guarda essas informações, e a partir daí ele faz o uso normal, mesmo funcionamento dos Apps facebook e instagram.

Onde o usuário faz a autenticação e reconhecimento somente no 1º acesso após instalação do App.

Um meio bastante arcaico de fazer isso é limitar o cors. Porém, se o caso é uma aplicação móvel, isso já não funcionaria.
Portanto, a sugestão do @Jonathan_Medeiros é bem interessante.