Кто-нибудь успешно реализовал инструментарий Google идентичности в PHP? - PullRequest
2 голосов
/ 21 сентября 2011

Я пытаюсь реализовать Google Identity Toolkit на PHP и Javascript

Я определил 7 случаев URL обратного вызова: URL-адрес входа: статус пользователя URL-адрес регистрации: URL-адрес выхода из системы: домашний URL-адрес: забытый URL-адрес:

и виджет, и получил ключ API .. и я пытаюсь сделать ту же функциональность, что и в следующем примере, предоставленном Google

https://account -chooser.appspot.com /

У меня проблема с тем, чтобы заставить Google подтвердить мой логин. Я делаю неправильно, мой verifyAssertion (сделано с curl в php) или

window.google.identitytoolkit.notifyFederatedSuccess({ "email": "email@domain.com", "registered": true });

Вот что случилось и проблема, с которой я столкнулся: Google имеет этот виджет, который сначала показывает вам вход со значком ключа, вы нажимаете на него, затем вы выбираете учетную запись Google или Yahoo или любой другой (эта часть все в порядке) Например, вы используете свою учетную запись Google, после чего появляется всплывающее окно, и GIT выполняет свою работу (выполняет обратный вызов на ваш URL-адрес обратного вызова), а затем перенаправляет на вашу учетную запись входа в систему или ошибку в зависимости от вашего ответа на обратный вызов. Что происходит в этом случае, он фактически перенаправляет на мою учетную запись сайта как залогинен, но виджет не показывает, что я на самом деле залогинен. Не как пример страницы Google. Он по-прежнему отображает виджет подписи ключа ...

Я что-то делаю, и не знаю, как это исправить ...

вот еще несколько ссылок из Google. Это немного недокументировано (createAuthUrl я даже не использовал это .. не знаю, для чего)

http://code.google.com/apis/identitytoolkit/v1/reference.html

http://code.google.com/apis/identitytoolkit/v1/acguide.html Я реализовал validAssertion с помощью EasyRpService в примере Что удивительно, так это то, что ответ равен NULL, а код ошибки HTTP также равен NULL .. нет 4xx или 200

кто-нибудь реализовывал это?

1 Ответ

1 голос
/ 09 декабря 2011

Виджет не обновляется автоматически.Необходимо сделать две вещи:

1) Убедитесь, что вы обновляете зарегистрированного пользователя после аутентификации.Ваша домашняя страница после входа в систему должна иметь фрагмент javascript, такой как:

<script type="text/javascript">
  var userData = {
    email: 'name@idp.com', // required
    displayName: 'User Name', // optional
    photoUrl: 'http://website.com/img/user.png', // optional
  };
  window.google.identitytoolkit.updateSavedAccount(userData);
</script>

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

Кроме того, чтобы отобразить зарегистрированного пользователя в виджете, необходимо вызвать showSavedAccount при инициализации виджета.

<script type='text/javascript'>
  window.google.identitytoolkit.showSavedAccount("logged-in-user@domain.com");
  $("#navbar").accountChooser();
</script>
<div id="navbar"></div>
...