почему не удается получить токен oAUTH2 в расширении Chrome? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть расширение Chrome, которое должно аутентифицировать пользователя. После аутентификации я отправлю электронное письмо этого пользователя на свой сервер, работающий в Docker, а затем зарегистрирую его. У меня проблемы с получением токена. Вот код:

         chrome.identity.getAuthToken({ 'interactive': true  }, function(token) {
            if (chrome.runtime.lastError) {
                currentSessionAccessToken=token;
                        alert(chrome.runtime.lastError.message);
                //alert("you need to have a gmail account");    //ubuntu
              return;
          }
          

          currentSessionAccessToken=token;
          var x = new XMLHttpRequest();
          x.open('GET', 'https://www.googleapis.com/oauth2/v2/userinfo?alt=json&access_token=' + token);
          
          x.onload = function() {
              if (x.readyState=200)
              {
 
              var data=this.responseText;
              jsonResponse = JSON.parse(data);
              photo = jsonResponse.picture;
              szName=jsonResponse.name;
              email=jsonResponse.email;
                x.abort();  //done so get rid of it 
                
              send_to_backend(request, sender, sendResponse);
              };
          }  
              
              
          x.send();
          
           }

Проблема в том, что я не получаю обратно токен доступа. Бэкэнд (в настоящее время) также находится на моем ноутбуке (localhost), но в контейнере docker. У меня нет сертификата SSL для моего локального хоста, и мне интересно, проблема ли в этом? Я никогда не получаю токен, поэтому я никогда не могу отправить его с помощью XMLHttpRequest, и поэтому я никогда не получаю ReadyState = 200. Есть идеи, что не так?

Ответы [ 3 ]

1 голос
/ 13 июля 2020

Оказывается, для того, чтобы "идентификация" заработала, вы должны опубликовать sh в Google WebStore. Причина, по которой я избегал этого, заключается в том, что на рассмотрение сайта часто уходят недели. У меня был такой опыт в прошлом. Я действительно не определил новый URL-адрес, который будет использоваться, и хотел, чтобы система работала, прежде чем я это сделал. Теперь, когда я отправил на проверку, я полагаю, что у меня есть немного времени, и я «замолчу» необходимые шаги (ie аутентификация) для продолжения разработки. Спасибо Мике за указание на руководство. Это привело к тому, что я понял, что невозможно заставить «идентификацию» работать без одобрения Google.

1 голос
/ 11 июля 2020

Зарегистрировали ли вы свое приложение для доступа к Google OAuth API и указали ли поле oauth в манифесте?

Из документации по авторизации пользователя:

Скопируйте ключ в свой манифест

Когда вы регистрируете свое приложение в консоли Google OAuth, вы указываете идентификатор своего приложения, который будет проверяться во время запросов токенов. Поэтому во время разработки важно иметь согласованный идентификатор приложения.

Чтобы сохранить идентификатор приложения постоянным, вам необходимо скопировать ключ из установленного манифеста. json в исходный манифест. Это не самая изящная задача, но вот как она выполняется:

  1. Go в каталог ваших пользовательских данных. Пример для MacOs: ~ / Library / Application \ Support / Google / Chrome / Default / Extensions
  2. Перечислите установленные приложения и расширения и сопоставьте свой идентификатор приложения на странице управления приложениями и расширениями с тем же идентификатором здесь.
  3. Go в каталог установленного приложения (это будет версия в идентификаторе приложения). Откройте установленный манифест. json (pico - это быстрый способ открыть файл).
  4. Скопируйте «ключ» в установленный манифест. json и вставьте его в исходный файл манифеста вашего приложения.

Получите свой идентификатор клиента OAuth2

Вам необходимо зарегистрировать свое приложение в консоли API Google, чтобы получить идентификатор клиента:

  1. Войдите в консоль API Google, используя ту же учетную запись Google, которая использовалась для загрузки вашего приложения в Chrome Интернет-магазин.
  2. Создайте новый проект, развернув раскрывающееся меню в верхнем левом углу и выбрав пункт меню «Создать ...».
  3. После создания и имени go перейдите к пункту меню навигации «Службы» и включите все службы Google, необходимые вашему приложению.
  4. Go, чтобы выберите пункт меню навигации «Доступ к API» и нажмите синюю кнопку «Создать идентификатор клиента OAuth 2.0 ...».
  5. Введите запрашиваемую информацию о бренде, выберите тип установленного приложения.
  6. Выбрать Chrome Приложение и введите свое приложение ции ID (тот же ID отображается на странице управления приложениями и расширениями).

После регистрации приложения вам необходимо добавить что-то вроде этого в свой манифест:

"oauth2": {
    "client_id": "YOUR_CLIENT_ID",
    "scopes": ["scope1", ...]
}
0 голосов
/ 29 июля 2020

Как видно из прикрепленного файла, у меня уже опубликован Substantiator.com. У меня есть ID, как вы можете видеть на другом изображении. Я не обновлял манифест. json ниже. Где мне взять Client ID для этого? Мне нужно снова отправить на рассмотрение? developer dashboard

введите описание изображения здесь

В моем манифесте. json есть следующее:

"oauth2":{


"client_id": "130232219141-n51fogh3g5vn3ual5n2na7c7tojs9vu2.apps.googleusercontent.com",

 "scopes": [
     "openid", "email", "profile"
]
   
    
  }

Это все еще не удается подключиться. Есть идеи?

...