Вход в Google одним касанием не возвращает idToken

Я пытаюсь сделать так, чтобы новый Google одним нажатием входил в работу, следуя этому руководству:

https://developers.google.com/identity/one-tap/web/get-started

Когда я звоню:

const hintPromise = googleyolo.hint({
  supportedAuthMethods: [
    "https://accounts.google.com"
  ],
  supportedIdTokenProviders: [
    // Google can provide ID tokens -- signed assertions of a user's
    // identity -- which you can use to create more streamlined sign-in
    // and sign-up experiences.
    {
      uri: "https://accounts.google.com",
      clientId: "YOUR_GOOGLE_CLIENT_ID"
    }
  ]
});

Я получаю ответ в обещании обратного вызова, без ошибок. Но idToken пусто...

hintPromise.then((credential) => {
    if (credential.idToken) {                       // <= THIS IS ALWAYS FALSE!!!
        // Send the token to your auth backend.
        loginWithGoogleIdToken(credential.idToken);
    }
}, (error) => { console.log(error); });

credential объект выглядит так:

{
  authDomain: "http://localhost:3000",
  authMethod: "https://accounts.google.com",
  displayName: "testName",
  id: "testEmail@gmail.com"
}

Кому-нибудь удалось заставить это работать?

2 ответа

Решение

У меня была та же проблема, но я смог ее решить, добавив правильные "Авторизованные источники JavaScript" на https://console.developers.google.com/ для моего проекта. Мне нужно было включить URI, включая порт " http://localhost:3000/", а не просто " http://localhost/".

Со страницы Google - "Если вы используете нестандартный порт, вы должны включить его в исходный URI".

Мы только что опубликовали руководство по устранению неполадок: https://developers.google.com/identity/one-tap/web/troubleshooting Troubleshooting

Наиболее важные вещи для проверки следующие:

  • убедитесь, что вы указали идентификатор клиента Google в любых запросах и что домен, на котором вы работаете с кодом, является авторизованным источником, включая порт. Смотрите документацию для деталей

  • убедитесь, что у вас есть активная учетная запись Google и включена функция Smart Lock. Попробуйте с обычной учетной записью Gmail с настройками по умолчанию

  • убедитесь, что вы используете поддерживаемый пользовательский агент. Важно отметить, что режимы эмуляции iOS в Chrome Dev Tools устарели (ожидается исправление)

Если вы все еще не можете заставить его работать или у вас есть какие-либо отзывы, мы будем рады получить от вас сообщение: обратитесь по адресу sso@google.com.

Другие вопросы по тегам