Я пытаюсь выполнить вход в Google на своем веб-сайте.
Я сделал шаги отсюда Авторизуйтесь с помощью Google.
Эта функция выполняется после того, как я вошел в Google:
function onSignIn(googleUser) {
var googleResponse = googleUser.getAuthResponse();
google_login(googleResponse, true);
};
Функция Google_login:
function google_login(res) {
var httpObject = getXMLHTTPObject();
var ajax_url = siteURL + 'google_login';
var params = 'token='+encodeURIComponent(res.id_token);
httpObject.open('POST', ajax_url, true);
httpObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
httpObject.onreadystatechange = function() {
if (httpObject.readyState == 4) {
if(httpObject.responseText == 'true') {
window.location = httpObject.responseURL;
}
else {
if(httpObject.responseText == '') {
window.location = siteURL + 'login_again';
}
else {
window.location = siteURL + 'google_login_error';
}
}
}
};
httpObject.send(params);
}
И в моей модели я использую этот код:
private $google_client;
function Google_model() {
parent::__construct();
$this->google_client = new Google_Client(['client_id' => 'my_client_id','client_secret' =>'my_client_secret']);
}
function check_google_user($access_token) {
$payload = $this->google_client->verifyIdToken($access_token);
if ($payload) {
return $payload;
}
return false;
}
В моем контроллере звоню check_google_user функция.
И тут появляется странное поведение. Иногда, когда я пытаюсь войти, я получаю полезную нагрузку, а иногда нет (PS: я пытаюсь войти с тем же пользователем в тот же день). Я делаю что-то неправильно?
РЕДАКТИРОВАТЬ:
Я получаю эту ошибку: Пойманное исключение: Невозможно обработать токен до 2017-01-25T16: 20: 24 + 0200
Решил это, комментируя эти строки в файле firebase JWT.php:
throw new BeforeValidException(
'Cannot handle token prior to ' . date(DateTime::ISO8601, $payload->iat)
);
Других решений пока нет …