"немедленный_файл" - не удалось автоматически войти в систему пользователя

У меня возникла проблема, когда я разработал свой сайт с помощью входа в Google+: Я сделал шаг за шагом, что док сказал мне, но я всегда терпел неудачу на шаге 4: https://developers.google.com/+/web/signin/

результат всегда был "немедленным" - не удалось автоматически войти в систему пользователя, я просто не знаю почему, может кто-нибудь мне помочь, очень спасибо!: - (

Ответ 1

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

Причина, по которой это не удается, заключается в том, что когда страница загружается первой, прежде чем пользователь даже нажимает кнопку, в Google отправляется запрос, чтобы определить, был ли пользователь уже зарегистрирован (например, через Google или другой сайт). Если они есть - им не нужно снова входить в систему, поэтому кнопка никогда не должна отображаться. Но если они уже вошли в not, вы получите ответ "немедленный_файл" и должны будете либо показать (или не очистить) кнопку.

tl; dr - Не волнуйтесь, не получив немедленную ошибку при первой загрузке страницы. Это нормально.

Ответ 2

В качестве обходного пути я использую метод gapi.auth.authorize в обратном вызове gapi.auth.signIn. Вот мой код:

gapi.auth.signIn({
    'callback': gPlusLoginCallback
});

function gPlusLoginCallback(authResult) {
    if (authResult['status']['signed_in']) {
        doSmth(authRes['access_token']); 
    } else if (authResult['error'] == "immediate_failed") {
        gapi.auth.authorize({
            client_id: gplusClientId,
            scope: 'https://www.googleapis.com/auth/plus.login email',
            immediate: true
        }, function (authRes) {
            if (authRes['status']['signed_in']) {
                doSmth(authRes['access_token']);
            }
        });
    }
}

function doSmth(accessToken){
    //Do smth
}

Ответ 3

Измените этот параметр "немедленное: истинное", чтобы оно было ложным "немедленное: ложное". Но если вы хотите сделать более сложную реализацию, посмотрите на первый образец здесь https://developers.google.com/api-client-library/javascript/start/start-js. Вам нужно позвонить в Google "gapi.auth.authorize({...", первый с "немедленным: истинным", а второй с "немедленным: ложным".

Ответ 4

Вопрос старый, но я недавно столкнулся с этой проблемой.

В моем случае это было потому, что я указал параметр URI prompt на none. Я думаю, Google не нравится, если пользователь никогда не заходил на вашу платформу раньше.

Всякий раз, когда я менял это на consent или полностью удалял, он отлично работал.