Chrome.identity.launchWebAuthFlow pode ser usado para autenticar contra APIs do Google?

Estou escrevendo uma extensão do Chrome e tentando usar o chrome.identity.launchWebAuthFlow para se autenticar no Google. Eu preferiria isso ao chrome.identity.getAuthToken (que funciona) porque getAuthToken obtém o token para o usuário atualmente conectado ao Chrome - que pode estar conectado a várias contas do Google. Desejo que o usuário possa conectar um calendário específico do Google à minha extensão, e esse calendário pode pertencer a um usuário diferente do que ele fez login no Chrome como.

Então, eu tenho tentado fazer isso com chrome.identity.launchWebAuthFlow e geralmente falhando em um redirect_uri incompatível. Eu tentei praticamente todos os tipos de credenciais que você pode configurar no console do desenvolvedor de APIs do Google. ("Aplicativo do Chrome" parecia a coisa certa, mas eu também tentei o aplicativo Web, Outros e iOS.) Tentei usar os resultados de chrome.extension.getURL ('string') e chrome.app.getRedirectURL ('string') como meu redirect_uri.

Experimentei o aplicativo de exemplo referido porhttps://stackoverflow.com/questions/40384255/oauth2-angular-chrome-extension mas também não conseguimos fazer isso funcionar.

Suspeito que esteja tentando fazer algo que costumava ser permitido e não é mais, ou que nunca funcionou.

Aqui está um exemplo do meu código, mas acho que meu problema está realmente no console de desenvolvimento da API - não vejo uma maneira de definir uma configuração que funcione para uma extensão:

    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); });

(Eu também tentei ohttps://accounts.google.com/o/oauth2/auth ponto final.)

Solução:

Depois de ler a resposta aceita, acabei com isso:

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); });

O responseUrl é o meu redirect_uri com parâmetros - então o Google oauth retornou isso em vez de redirecionar o navegador para ele - e eu poderia continuar a partir daí.

questionAnswers(1)

yourAnswerToTheQuestion