Есть ли смысл подписывать REST API запросы?
Кука - это тоже access_token, только подставляемый браузером автоматически, даже если запрос инициирует не ваша страница, а страница левого сайта. Соответственно, при пробрасывании токена через куки, сторонний сайт сможет делать запросы к вашему, от имени пользователя. Нужно ли такое разрешать - вы решаете сами. Если нужно - просто используйте куки. Если не нужно, то самое простое - с запросом посылать взятый из куки токен в хедере, а на сервере сверять их идентичность. Получить куки скриптом можно лишь с того же сайта, кто их поставил. В урле токен лучше не посылать, чтобы он не светился в логах.
1. Сервер создаёт (генерирует случайно) при регистрации пользователя REST-token и затем, постоянно хранит в своей базе данных связку REST-token'а с клиентом (1-к-1): clientID => REST-token
2. REST-token - сервер передаёт клиенту через E-MAIL или SMS сразу после регистрации и просит ввести выданный код в поле, находящееся внутри запущенного приложения. 
Или же, активировать переходом по ссылке, если это - web-приложение в браузере, открываемое по линку (а не stand-alone, запускаемое с ярлыка мобильного интерфейса).
3. Клиент подписывает каждый запрос к серверу этим токеном.REST-token - клиент никогда не передаёт!
4. Сервер при поступлении запроса от клиента - подписывает все данные запроса токеном того же клиента на своей стороне.
5. Сервер сразу же сверяет: если подписи совпадают - запрос принимается к исполнению.Для предотвращения подбора ключа REST-token - вводится случайно-генерируемая переменная в перечень полезных параметров при запросах к API: r,rand,random и т.д.