Мобильное приложение не может быть URL-адресом обратного вызова, поскольку оно не имеет статического адреса для обратного вызова сервера API. Например, ваш IP-адрес Android меняется, когда вы переходите с мобильной сети на домашний Wi-Fi или в кафе.
Вам нужен сервер между мобильным приложением и конечной точкой Auth, который может безопасно передавать токены входа в систему. Подобный поток можно найти с помощью службы, подобной Auth0
.
Я исправил бы ответ Grant на "Да, который будет работать главным образом как ожидалось".
А именно, mod_rewrite
поведение относительно существующих строк запроса может быть удивительным. Как пример, давайте возьмем следующее правило, которое преобразовывает URL, который Вы предоставили:
RewriteRule /contact /index.php?p=contact
Это правильно перепишет /contact
кому: /index.php?p=contact
и название страницы будет доступно через $_GET['p']
. Однако при использовании этой техники со сценарием, который использует параметры кроме названия страницы, это становится немного более хитрым. Это правило также переводит /contact?person=Joe
кому: /index.php?p=contact
. person=Joe
параметр исчезает полностью! Существует два способа иметь дело с этим.
Самый простой путь состоит в том, чтобы использовать [QSA]
("строка запроса добавляет"), флаг на Вашем правиле, которое поместит строку исходного запроса после того, как параметры предоставили в правиле, переведя /contact?person=Joe
кому: /index.php?p=contact&person=Joe
:
RewriteRule /contact /index.php?p=contact [QSA]
Однако это позволяет Вашему p=
параметр, который будет перезаписан. Посещение /contact?p=about
будет переписан к /index.php?p=contact&p=about
, так $_GET['p']
возвратится "о" в Вашем сценарии, не "связываются". Для разрешения этого используйте QUERY_STRING
переменная вместо этого:
RewriteRule /contact /index.php?%{QUERY_STRING}&p=contact
Это гарантирует это $_GET['p']
будет всегда возвращать "контакт" при использовании этого правила, независимо от того, смешивают ли посетители с URL.:-)
При перезаписи URL это сделано mod_rewrite - страница, полученная в конце, является все еще "старой", т.е. index.php? p=contact. Другими словами, браузер получает контакт/. mod_rewrite затем переписывает его к index.php? p=contact. Сценарий, из-за этого, не знает, что любая перезапись произошла - это все еще называют ее "обычным" путем. Поэтому такой переписывать будет работать. Вы могли бы хотеть думать о нем как о прокси перезаписи, который запрашивает другую страницу, чем та инициирующий браузер, который требуют.
Разве это не случай, что изменение заголовков, представив части страницы причина, может завинтить взлеты на php страницах? Как Вы переписываете URL? Возможно, я неправильно понимаю...
Когда клиент запрашивает http://example.com/contact, сервер использует переписать правило служить им http://example.com/index.php?p=contact вместо этого. Клиент не сможет видеть переписанный URL и даже не мог бы смочь сказать, что он был переписан. При запросе любого URL, поскольку клиент дал бы Вам ту же самую страницу.
Вы переписываете URL от /contact
кому: /index.php?p=contact
, таким образом да, это будет работать как ожидалось.
В Вашем случае это не работало бы. mod_rewrite, после того, как это найдет соответствие и перепишет http://example.com/index.php?p=contact на http://example.com/contact, делает внутреннее перенаправление. Даже после того, как перенаправление, новый, перенаправленный URI, может все еще быть подобрано против условия и далее перенаправлено.
В любом случае поступление, которым URIs не сохранены в памяти, так даже Apache, может восстановить, каков исходный URI был. PHP, к тому времени, когда это выполняется, также не знает исходный URI. Следовательно, Вы освобождаете свой $ _GET Вар, поскольку переменные, отправленные через, ДОБИРАЮТСЯ, содержатся в URL, который был, к настоящему времени, преобразован, и PHP заполняет ассоциативный $ _GET массив путем парсинга входящих запросов.
Предложение поддержки обоих было бы кропотливо. Если у Вас есть http://domain.com/segment1/segment2/segment3, необходимо связать сегменты с чем-то значимым. Вы разделили бы свой домен и взорвались бы на '/', и в Вашем случае Вы могли сказать, что первый сегмент запрашивает страницу, и из http://example.com/contact/ можно извлечь страницу = 'контакт'