Как заставить Cortana OAuth не использовать Magic Code

Я использовал ботбилдер-js для написания собственного бота. В какой-то момент требуется, чтобы пользователь вошел в систему, поэтому бот отправляет диалоговое окно OAuthPrompt, которое заставляет пользователя войти в систему (с помощью Google, который я настроил в параметрах подключения OAuth портала Azure). Он отлично работает в эмуляторе Bot Framework, но когда я интегрирую бота с Cortana, после входа пользователя в систему он попадает на эту страницу:

Как заставить Cortana OAuth не использовать Magic Code

Самое интересное, что это диалоговое окно является модальным, поэтому я не могу вставить код в чат Кортаны, даже если бы захотел.

Что мне нужно сделать, чтобы Кортана не требовала этого волшебного кода?

Вы включили "Подключенные службы"? Не надо. Если вы используете карты входа в систему или авторизацию для ботов, вы несете ответственность за поток OAuth. Кортана поддерживает прозрачную обработку oauth только в том случае, если вы делегируете ей (то есть вы настраиваете oauth канала cortana через его страницу конфигурации). И затем часть входа в систему принадлежит провайдеру управления идентификацией (так что ... это выглядит как у вас плохой URL-адрес перенаправления; что это такое?)

Micromuncher 18.12.2018 05:06

Нет, я не настраивал подключенные службы в настройках Cortana - я использую «Параметры подключения OAuth», которые находятся в настройках бота. Я добавил поставщика услуг "Google" (на которого ссылается мой бот), установил свой идентификатор клиента + секрет клиента + область действия ("электронная почта"). Поэтому я нигде не указывал URL-адрес перенаправления

Tomáš Bezouška 18.12.2018 13:28

Кортана тупит, когда выставляет холст для карточки oauth или входа в систему. Он доверяет диспетчеру удостоверений (в вашем случае Google), чтобы обеспечить достойный опыт. Похоже, что настройка двухфакторной аутентификации в аккаунте мешает работе. Я могу попробовать воспроизвести это, но, вероятно, ничего не могу с этим поделать. Возможно также задать вопрос экспертам google oauth.

Micromuncher 18.12.2018 18:16

Пожалуйста, пришлите мне точные настройки подключения oauth; Мне нужно увидеть URI авторизации и URI перенаправления. Не стесняйтесь очищать client_id.

Micromuncher 09.01.2019 20:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
184
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Уже ответил на это на GitHub репо botbuilder-js. Отвечаем для большей наглядности.

Похоже, это ошибка. Я смог воспроизвести проблему. Если вы скопируете код, вы можете ввести его как новую команду для бота. Это ужасный обходной путь, но он будет работать, пока пользовательский интерфейс не будет исправлен. Следуй этим шагам:

  1. Откройте Кортану и подключитесь к своему боту («скажи [боту] привет»)
  2. Нажмите кнопку входа в систему
  3. Запишите магический код из окна
  4. Откройте Кортану и повторно подключитесь к своему боту.
    • Сообщите своему боту магический код («скажи [боту] [магический код]»)
    • Вход должен быть успешным
  5. Взаимодействуйте со своим ботом

Следуя инструкциям в Google, я обнаружил, что именно из-за URL-адреса перенаправления вам предлагается ввести волшебный код. Если вы используете инструменты Google и настроили внешнюю аутентификацию, вы получите URL-адрес авторизации OAuth, который выглядит следующим образом ...

Authorize this app by visiting this url: 
https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&response_type=code&client_id=[my client id]&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob
Enter the code from that page here: [your code]

Вы не должны настраивать внешнюю аутентификацию (также известную как copy / paste auth urn:ietf:wg:oauth:2.0:oob) - потому что это означает, что диспетчер удостоверений не вызывает redirect_url (или redirect_uri), когда поток завершается (позволяя службе ботов или Кортане знать, что вы повторный вход в систему), и, что более важно, вы, вероятно, не хотите, чтобы пользователь вставлял какой-то код, чтобы получить токен доступа. Если вы выполните https://developers.google.com/identity/protocols/OAuth2InstalledApp, вы увидите, что uri перенаправления должен быть либо фреймворком бота, либо кортаной, а не внеполосным. Сделайте это, и код должен быть получен запрашивающей стороной программно. Вы можете настроить это в приложении Google, нажав на колонку учетных данных.

URI перенаправления для службы ботов - https://token.botframework.com/.auth/web/redirect, а URI перенаправления для Кортаны - https://www.bing.com/agents/oauth. Вы можете поддерживать и то, и другое, если ваш бот поддерживает несколько каналов (и различать поведение в зависимости от имени канала, привязанного к событию) - просто не забудьте изменить запрос входа в Cortana на «Вход при необходимости»

Micromuncher 10.01.2019 18:08

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