redirect_uri_mismatch при использовании идентификатора launchWebAuthFlow для расширения Google Chrome - PullRequest
0 голосов
/ 20 октября 2018

Я пытался заставить chrome.identity.launchWebAuthFlow работать с моим расширением Chrome для доступа к потоку OAuth от Google (нет, я предпочитаю не использовать getAuthToken).Я следовал за реализацией , изложенной в этом вопросе .

Вот шаги, которые я прошел для настройки:

  1. Сгенерировал ключ для моегоРасширение, которое я добавил в manifest.json, поэтому идентификатор расширения не меняется (в соответствии с этим ответом )
  2. . Отправился в Google Cloud Platform, зарегистрировал новое приложение и включил его.доступ к API.Для учетных данных я выбрал OAuth ID> Chrome App, ввел свой добавочный ID и получил свой идентификатор клиента.
  3. Я реализовал этот код в своем файле background.js

    var auth_url = 'https://accounts.google.com/o/oauth2/auth';
    var client_id = '<client_id from Cloud Console>';
    var redirect_url = chrome.identity.getRedirectURL("oauth2");
    var auth_params = {
        client_id: client_id,
        redirect_uri: redirect_url,
        response_type: 'token',
        scope: 'profile'
    };
    
    var params = Object.keys(auth_params).map(function(k) {
        return encodeURIComponent(k) + '=' + encodeURIComponent(auth_params[k])}).join('&')
    auth_url += '?' + params;
    
    console.log(redirect_url);
    console.log(auth_url);
    chrome.identity.launchWebAuthFlow({url: auth_url, interactive: true}, 
            function(responseUrl) { console.log(responseUrl); });
    

Когда я запускаю это, я получаю Unchecked runtime.lastError while running identity.launchWebAuthFlow: Authorization page could not be loaded.

Затем я проверяю URL авторизации в браузере, и ошибка 400 redirect_uri_mismatch

Теперь я проверил redirect_url бесчисленное множествораз.Он имеет формат https://<app-id>.chromiumapp.org/oauth2 - идентификатор приложения точно соответствует тому, что я указал в учетных данных консоли облака.Он также не меняется, когда я перезагружаю расширение, так как оно связано с ключом в manifest.json

Чего мне не хватает?Кто-нибудь может подтвердить, что это все еще работает?

Для справки, мой файл manifest.json

    {
      "name": "My OAuth Extension",
      "key": "<My KEY>",
      "version": "0.0.1",
      "manifest_version": 2,
      "description": "Testing OAuth",
      "homepage_url": "http://test.com",
      "default_locale": "en",
      "permissions": [
        "https://*/*",
        "identity",
        "*://*.google.com/*"
      ],
      "background": {
        "scripts": ["src/bg/background.js"],
        "persistent": true
      }
    }

Чего мне не хватает?Кто-нибудь может подтвердить, что это все еще работает?

...