"немедленный_файл" - не удалось автоматически войти в систему пользователя
У меня возникла проблема, когда я разработал свой сайт с помощью входа в 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
или полностью удалял, он отлично работал.