Как перенаправить на последнюю ссылку после входа из гугла в php?

Я пытаюсь перенаправить пользователя на последнюю ссылку после входа в систему через Gmail, FB

Вот четыре вещи, которые я попробовал, но не добился успеха

1) пользователь$_SERVER['HTTP_REFERER'] Но он перенаправляет меня обратно в gmail вместо последней ссылки на моем сайте.

2) Использование $_SESSION — Я пытаюсь сохранить последний URL в сессии до входа в систему, но после входа в систему я не получаю его значение, так как сессия была пустой.

3) Использование куки — я тоже пытаюсь использовать кокки, но это тоже не работает

4) Я пытаюсь отправить последний URL как $_GET параметр в URL-адресе перенаправления, но это останавливает вход в Google, так как этот URL-адрес не совпадает с URL-адресом, сохраненным в приложении Google.

Есть ли другой способ добиться этого?

1

Решение

Я не понимаю, почему использование куки не работает. Перед перенаправлением пользователя на сервер авторизации сохраните текущий URL-адрес в файле cookie. Когда AS перенаправляет пользователя обратно на redirect_uri, эта страница делает еще одно перенаправление на URL, сохраненный в куки.

Но мне больше нравится версия, в которой вы включаете «URL последней страницы» в запрос (4-й элемент в вашем списке). Поскольку Google, по-видимому, не допускает использование подстановочных знаков в их конфигурации OAuth, вы можете использовать state параметр вместо. От RFC 6749 — структура авторизации OAuth 2.0:

state
RECOMMENDED.  An opaque value used by the client to maintain
state between the request and callback.  The authorization
server includes this value when redirecting the user-agent back
to the client.  The parameter SHOULD be used for preventing
cross-site request forgery as described in Section 10.12.

Когда вы создаете свой URL перенаправления, вы просто устанавливаете state параметр вроде так:

https://accounts.google.com/o/oauth2/v2/auth
?client_id=MY_CLIENT_ID
&redirect_uri=http://example.com/oauth-redirect_uri
&scope=REQUESTED_SCOPES
&state=http://example.com/last-page-the-user-loaded

В зависимости от вашего потока OAuth, сервер авторизации перенаправит пользователя на URL, который выглядит примерно так при успешной авторизации:

http://example.com/oauth-redirect_uri
?code=CODE
&state=http://example.com/last-page-the-user-loaded

Ваш сервер может затем обработать state параметр и перенаправить пользователя соответственно.

1

Другие решения

Вы будете проверять, вошел ли пользователь в систему или нет с какой-либо функцией, и если нет, вы бы взяли пользователя на страницу входа, на которой пользователь может войти в систему с помощью Google или FB.
Предполагая это,
Я бы сказал, сохраните предыдущую ссылку в SESSION в той же функции, в которой вы проверяете, вошел ли пользователь в систему или нет,

Я пишу фрагмент кода, и вы можете получить от него идею написать свой конкретный код.

if(isset($_SERVER['HTTP_REFERER']))
{
$_SESSION['url_to_go'] = $_SERVER['HTTP_REFERER'];
}

И когда пользователь входит в систему успешно, проверьте, если ключ сеанса url_to_go присутствует, затем перенаправьте пользователя на ссылку или перенесите его на панель инструментов или на любую имеющуюся у вас страницу по умолчанию.

Итак, как вы сказали, сессия очищается, когда мы возвращаемся с социального сайта, вы можете использовать localStorage с JS (хранилище браузера) для хранения $_SERVER['HTTP_REFERER'] и когда вы вернетесь, вы можете получить его и очистить после того, как вы используете его один раз.

1

По вопросам рекламы [email protected]