/ / Google JS API: gapi.auth.signIn проблема зворотного виклику - javascript, google-api

Google JS API: проблема gapi.auth.signIn функції зворотного виклику - javascript, google-api

Коли я називаю gapi.auth.signIn, це викликається двічі: перед відкриттям спливаючого вікна входу та після натискання кнопки входу користувача. Але в обох випадках authResponse Параметр не змінюється.

Ось зразок коду:

gapi.auth.signIn({
scope: "https://www.googleapis.com/auth/plus.login",
callback: function(authResponse) {
console.log(authResponse);
}
)};

І це так authResponse об'єкт виглядає в обох випадках

{
client_id: /* my client id */
cookie_policy: undefined
error: "immediate_failed"
error_subtype: "access_denied"
expires_at: "1422353634"
expires_in: "86400"
g_user_cookie_policy: undefined
issued_at: "1422267234"
response_type: "token"
scope: "https://www.googleapis.com/auth/plus.login"
state: ""
status:
{
google_logged_in: false
method: null
signed_in: false
}
}

EDIT: Перш ніж увійти, я намагаюся перевірити, чи є користувач вже авторизований у google.

gapi.auth.authorize({
client_id: _googleClientId,
immediate: true,
scope: "https://www.googleapis.com/auth/plus.login"
}, function(response) {
if (response.status.signed_in) {
connectGoogleSuccess(response);
} else {
gapi.auth.signIn({
scope: "https://www.googleapis.com/auth/plus.login",
callback: function(authResponse) {
console.log(authResponse);
}
)};
}
}
);

Як правильно змінити об'єкт authResponse після того, як користувач натиснув кнопку "Вхід"?

Будь-яка допомога оцінена)

Відповіді:

1 для відповіді № 1

Окей, ось обхідний шлях, який я отримав.

  1. Спочатку я називаю gapi.auth.authorize метод з використанням параметра "immediate"=true, так що спливаюче вікно не відображатиметься.

    gapi.auth.authorize({ client_id: _googleClientId, immediate: true, scope: "https://www.googleapis.com/auth/plus.login" }, function(response) { if (response.status.signed_in) { connectGoogleSuccess(response); } else { connectGoogle(); } });

  2. Потім я знову подзвоню gapi.auth.authorize метод з "immediate"=true, тому користувач може вводити свої облікові дані.

    connectGoogle() { gapi.auth.authorize({ client_id: _googleClientId, immediate: false, scope: "https://www.googleapis.com/auth/plus.login" }, function(response) { if (response.status.signed_in) { connectGoogleSuccess(response); } }); };

Сподіваюся, що це допоможе комусь!