verifyIdToken工作一次并再次失败

时间:2017-01-25 14:04:39

标签: php codeigniter gmail-api google-signin googlesigninapi

我试图在我的网站上实施Google登录。 我已经完成了Authenticate with 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之前处理令牌

1 个答案:

答案 0 :(得分:-2)

通过在f​​irebase JWT.php文件中注释这些行来解决这个问题:

$('.marquee').marquee({
    gap: 50,
    duplicated: true
});