аутентификация google Oauth2.0 — не продолжать redirect_uri

Я пытаюсь реализовать вход с помощью Google на свой веб-сайт. Пользователи могут посещать мой сайт в 3 доменах

1) обычная ссылка (HTTP и WWW...) 2) http://example.com - без www 3) приложения .facebook.com/example — приложение для фейсбука

Мы хотим разрешить пользователю подключаться к Google в этих трех вариантах.

Мы используем gapi (библиотека javascript Google) для аутентификации пользователя. Мой код выглядит так:

   var config = {
        'client_id': 'my_client_id',
        'scope': 'my_scopes',
        **'redirect_uri' : "https://www.example.com/oauth/",**
        'immediate': immediate
    };
    **gapi.auth.authorize(config, function(){});**

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

Моя проблема в том, что если я захожу на свой сайт с домена без WWW, авторизация не работает, и пользователь не перенаправляется на ссылку redirect_uri - это означает, что у нас нет его токена.

Если я удаляю WWW в redirect_uri (тогда это будет выглядеть как https://example.com/oauth/) домен facebook не работает...

Это так расстроено .. Кто-нибудь знаком с такой проблемой? Есть идеи?

Мы потратили на это слишком много часов....

Спасибо Z




Ответы (1)


Вы можете зарегистрировать несколько URI перенаправления для одного клиента в Google API Console, чтобы зарегистрировать по одному для каждого домена и передать один для текущего доступного домена в параметре redirect_uri запроса авторизации. Вам не нужно использовать один и тот же URI перенаправления в ваших доменах, чтобы решить проблемы с восстановлением состояния/токена. введите здесь описание изображения

person Hans Z.    schedule 29.12.2014
comment
мы пытались работать с парой redirect_uris, но потом у нас возникла проблема, что всплывающее окно авторизации не всегда закрывалось.. Поэтому мы выбираем всплывающее окно, сохраняем токен там, отправляем его в сервер, а затем обратно к клиенту, чтобы использовать его для следующих вызовов. - person Zee; 29.12.2014
comment
Я думаю, тогда это был бы другой вопрос, чтобы попытаться отладить, почему всплывающее окно не всегда закрывается. В любом случае я бы рекомендовал использовать не всплывающее окно, а полное перенаправление браузера, поскольку это рекомендуемый подход и лучшая практика для внешнего входа в систему. - person Hans Z.; 29.12.2014
comment
Действительно? насколько мы видим на других сайтах, они работают с всплывающим окном аутентификации Google, и после входа в систему оно закрывается .. (проверьте pinterest) - person Zee; 29.12.2014
comment
Всплывающее окно затрудняет для пользователя распознавание легитимности страниц IDP и затрудняет для IDP предоставление универсально работающей и хорошо отображаемой страницы входа в систему; Google разрешает вход через всплывающее окно с явным исключением только потому, что они используют X-Frame-Options для блокировки кадров. - person Hans Z.; 29.12.2014
comment
Я думаю, что мое направление должно быть сосредоточено на ссылке HTTPS и HTTP... Возможно, проблема в этом. - person Zee; 29.12.2014
comment
вы можете перейти с http на https (в запросе-›ответе), но не наоборот - person Hans Z.; 29.12.2014
comment
Мы решаем проблему. Проблема была связана с нашей всплывающей формой, а не с Google. Большое спасибо, Ганс, за помощь. - person Zee; 30.12.2014