Как приложение может получить доступ к службе OAuth (например, Dropbox) от имени пользователя, не имея где-либо сервера? - PullRequest
0 голосов
/ 26 июня 2019

Каков правильный / рекомендуемый способ реализации Dropbox, GoogleDrive или любого другого клиента, как просто клиента и без сервера, с точки зрения доступа OAuth?

Множество провайдеров (например, Dropbox).) не разрешит redirect_uri, который не является http / https.А на телефонах кажется, что Google (и Apple?) Не будет разрешать запросы OAuth, кроме как из браузера ОС (для удобства пользователя), а это означает, что единственный способ для приложения получить код авторизации (без участия сервера) изoauth - перехватывать URI, такой как "http://localhost:9876/myapplication/", сообщая ОС, что она хочет перехватить такой URI. Перехват http URI невозможен (ОС перенаправляет его в браузер) без сложной / сложной настройкидля которого требуется сервер (что-то вроде this ).

Существует также проблема, связанная с необходимостью сообщить поставщику услуг о моем приложении и получить идентификатор клиента / секретный ключ, который я должен жестко кодироватьв приложении.

Существует тип предоставления OAuth, в котором я просто беру имя пользователя и пароль пользователя и напрямую отправляю их на сервер. Это кажется сомнительным и, вероятно, не очень хорошо воспринято пользователями.

Как правильно это сделать? Нужно ли иметь работающий сервер / службу, чтобы иметь возможность создаватьприложение, которое является сторонним порталом для этих служб?

Спасибо,

1 Ответ

0 голосов
/ 02 июля 2019

Обходной путь (как предложено в комментарии @ gbazilio) - просто реализовать аутентификацию вручную, вызвав конечные точки oauth внутри веб-просмотра. Чтобы заставить его работать с поставщиками услуг, такими как Google, который блокирует oauth от веб-просмотров, нужно установить заголовок user-agent в запросах oauth для какого-либо пользовательского агента мобильного браузера, и все будет работать нормально.

...