Я пытаюсь включить google-вход на веб-страницу. Я следовал документации и я использую этот скрипт:Google подпишут Google ID
function onSignIn(googleUser) {
var id_token = googleUser.getAuthResponse().id_token;
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token='+id_token);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function() {
console.log('Signed in as: ' + xhr.responseText);
};
xhr.send('idtoken=' + id_token);
}
Я не очень понимаю, следующий бит, хотя - я могу видеть объект responseText, но что мне делать с ним? Я только хочу проверить, что пользователь от нашей работы, т. Е. Имеет адрес электронной почты из нашего домена (это Google Apps для работы gmail). Как только он будет проверен, я хочу сделать php-сообщение для другого API, но любые проверки, которые я могу думать о создании на заднем конце, мне очень легко обманывают. Я вижу, что есть библиотека php для аутентификации токенов here, но я не знаю, что я должен делать с этим. Кто-нибудь может дать мне указатель?
[EDIT: информация добавляется ниже]
Итак, ответ я получаю обратно объект JSON, как это (значимые ценности заменены случайными строками):
{
"iss": "accounts.google.com",
"at_hash": "e2CYheQnJjpBfyS2StkM9D",
"aud": "168479532489-Y23kc3sHhn9frJ65Bwtx8Ff4Xdq5RqSH.apps.googleusercontent.com",
"sub": "56798241598765321849762",
"email_verified": "true",
"azp": "168479532489-Y23kc3sHhn9frJ65Bwtx8Ff4Xdq5RqSH.apps.googleusercontent.com",
"hd": "example.com",
"email": "[email protected]",
"iat": "1444085795",
"exp": "1444089395",
"name": "Lucas Smith",
"given_name": "Lucas",
"family_name": "Smith",
"locale": "en",
"alg": "GU788",
"kid": "jyaKrpekvYhcRx6KpYSbKhAdYYScLNbEqxqMfCY7"
}
Теперь, в соответствии с this Мне все еще нужно проверить, что требование аудита содержит один из идентификаторов клиента моего приложения, и я также могу проверить, что хостинг-домен (hd-ключ здесь) соответствует нашему домену.
Итак, вопрос будет: если я отправлю этот объект JSON на php-страницу через ajax, сравните строки в объекте с теми, которые я получаю от консоли разработчика - я предполагаю, используя strcmp()
- это то, что все, что мне нужно сделать? И если они совпадают, сделайте то, что я хотел сделать (назовите другой API и т. Д. И т. Д.)?
Извините за чрезмерность. У меня почти нулевой опыт аутентификации php и serveride, и я действительно понятия не имею, как легко было бы подменять такую систему. Я предполагаю, что это может выглядеть безопасно, но оставить дверь открытой для того, кто хочет пробраться. Спасибо за любой совет.
@deek - Почему даже рекомендую это? Код на 100% доступен для чтения, и они делают все просто отлично. Это не проблема ajax. С вашей рекомендацией у них будет все тот же вопрос: «Что делать с данными». – Jesse
проверьте этот https://developers.google.com/api-client-library/php/auth/web-app – sandeepsure
Lucas, можете ли вы рассказать нам, что выводится на консоль (удаление личной информации)? – Jesse