Вход в 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: "[email protected]"
}

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


person edeboursetty    schedule 27.10.2017    source источник
comment
Хм, домен, на котором вы запускаете код, зарегистрирован в консоли разработчика для идентификатора клиента, который вы используете? (похоже, вы пытаетесь использовать localhost:3000 ?) Если вы пришлете мне свой идентификатор клиента, я могу посмотреть -- [email protected]   -  person Steven    schedule 28.10.2017


Ответы (2)


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

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

person jshaffer    schedule 29.10.2017
comment
Это действительно было проблемой. Спасибо - person edeboursetty; 30.10.2017

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

Наиболее важные вещи, которые необходимо проверить, следующие:

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

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

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

Если вы по-прежнему не можете заставить его работать или у вас есть какие-либо отзывы, мы будем рады услышать от вас: свяжитесь с нами по адресу [email protected].

person Steven    schedule 01.11.2017