Можно ли использовать chrome.identity.launchWebAuthFlow для аутентификации в API Google?

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

Итак, я пытался сделать это с помощью chrome.identity.launchWebAuthFlow и, как правило, терпел неудачу вокруг несоответствующего redirect_uri. Я попробовал почти все типы учетных данных, которые вы можете настроить в консоли разработчика API Google. («Приложение Chrome» казалось правильным, но я также попробовал веб-приложение, Другое и iOS.) Я попытался использовать результаты как chrome.extension.getURL ('string'), так и chrome.app.getRedirectURL ('строка') как мой redirect_uri.

Я опробовал пример приложения, на которое ссылаетсяhttps://stackoverflow.com/questions/40384255/oauth2-angular-chrome-extension но так и не смогли заставить это работать.

У меня есть подозрение, что я пытаюсь сделать что-то, что раньше было разрешено, а больше нет или просто никогда не работало.

Вот пример моего кода, но я думаю, что моя проблема действительно в консоли разработчика API - я не вижу способа настроить конфигурацию, которая будет работать для расширения:

    var auth_url = 'https://accounts.google.com/o/oauth2/v2/auth';
    var client_key = *[client id from API dev console]*
    var auth_params = { 
                        client_id: client_key,
                        redirect_uri: chrome.identity.getRedirectURL("oauth2.html")
                        scope: 'https://www.googleapis.com/auth/calendar'
                      };
    auth_url += '?' + $.param(auth_params);

    chrome.identity.launchWebAuthFlow({url: auth_url, interactive: true}, function(token) { console.log(token); });

(Я также попробовалhttps://accounts.google.com/o/oauth2/auth конечная точка.)

Решение:

Прочитав принятый ответ, я обернулся этим:

var auth_url = 'https://accoun,ts.google.com/o/oauth2/auth';
var client_id = '[client ID from console]';
var redirect_url = chrome.identity.getRedirectURL("oauth2.html");
var auth_params = {
    client_id: client_id,
    redirect_uri: redirect_url,
    response_type: 'token',
    scope: 'profile'
};
auth_url += '?' + $.param(auth_params);
console.log(auth_url);
chrome.identity.launchWebAuthFlow({url: auth_url, interactive: true}, function(responseUrl) { console.log(responseUrl); });

ResponseUrl - это мой redirect_uri с параметрами - поэтому Google oauth вернул его вместо перенаправления браузера на него - и я мог бы продолжить с этого.

Ответы на вопрос(1)

Ваш ответ на вопрос