Как предоставить URL обратного вызова для сервера в приложении для Android - PullRequest
0 голосов
/ 21 января 2019

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

Я знаю , что должно произойти . Я хочу начать действие, которое открывает браузер или имеет веб-просмотр с URL-адресом для входа на сайт. Однако в этом URL я должен установить URI обратного вызова моего приложения, чтобы сервер oauth2 мог ответить.

Я уже знаю, что должен добавить это к своей активности в androidmanifest, чтобы получить обратный вызов:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="oauth-testing" />
</intent-filter>

И я также знаю, что мне нужно позвонить на активность, содержащую веб-сайт для входа, следующим образом:

Intent intent = new Intent(); 
intent.setData(Uri.parse("https://someOAuthServer.com?redirect_uri=oauth-testing://UNKNOWN"));
startActivityForResult(intent, REQUEST_CODE);

И это часть, которую я пока не получил. Я понимаю, что oauth-сервер берет uri обратного вызова из параметра url redirect_uri, и я понимаю, что oauth-testing сообщает моему устройству / приложению, какое действие получает обратный вызов. Тем не менее, я не совсем знаю, какой «URL» я должен передать, где UNKNOWN стоит в приведенном выше примере.

Должен ли я установить свой собственный IP? Если да, то какой? Устройство может иметь более одного IP-адреса. Это имеет значение? Я видел один подход, который сделал это: "oauth-testing: ///". Они просто поставили три форварда. Что именно это делает? Это даже верно?

Когда я пытаюсь перейти с «oauth-testing: ///», тогда я получаю обратный вызов, когда я «возвращаюсь» к своей деятельности с помощью кнопки «назад» на панели навигации. Тем не менее, он явно не содержит никаких данных.

Мой подход неверен? Нужно ли мне даже звонить startActivityForResult или это отправит смешанные сигналы моей активности?

UPDATE Я только что узнал, что " https: /// " == "https://localhost". Итак, это явно неправильно. Последнее, что я могу вспомнить, это отправка моего IP в этом URL. Но как? И какой?

1 Ответ

0 голосов
/ 23 января 2019

Рекомендуется интегрировать библиотеку Google AppAuth для обработки входов в систему, что соответствует последним рекомендациям по безопасности.

У них есть образец, который вы можете запустить - если вы можете заставить его работать, вы сможете применить те же принципы к своему собственному приложению.

Надеюсь, это поможет,

Gary

PS. Если это поможет, в моем блоге есть некоторые заметки о Как запустить пример кода Android AppAuth .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...