私はChrome拡張機能を作成しており、chrome.identity.launchWebAuthFlowを使用してGoogleで認証しようとしています。 getAuthTokenは現在Chromeにログインしているユーザーのトークンを取得するため、chrome.identity.getAuthToken(これは動作します)にこれを使用することをお勧めします。複数のGoogleアカウントにログインしている可能性があります。ユーザーが特定のGoogleカレンダーを自分の内線番号に接続できるようにしたい場合、そのカレンダーはChromeにログインしたユーザーとは異なるユーザーに属している可能性があります。Google APIに対する認証にchrome.identity.launchWebAuthFlowを使用できますか?
私はchrome.identity.launchWebAuthFlowでこれを実行しようとしていましたが、一般に、不一致のredirect_uriを回避していました。 Google API開発者コンソールで設定できるすべてのタイプの資格情報を試しました。私はchrome.extension.getURL( 'string')とchrome.app.getRedirectURLの両方の結果を使用しようとしましたが(「Chromeアプリケーション」は正しいことと思われましたが、Webアプリケーション、その他、およびiOSも試しました) ( 'string')を私のredirect_uriとして使用します。
私はhttps://stackoverflow.com/questions/40384255/oauth2-angular-chrome-extensionで参照されているサンプルアプリケーションを試しましたが、それを動作させることができませんでした。
私には疑いがあります。私は許されていた、あるいはもはや働いていない、あるいはまったく働いていないことをしようとしています。
ここに私のコードの例ですが、私は私の問題は、APIのdevのコンソールには本当にだと思う - 私は拡張のために働く構成を設定する方法が表示されない:
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://accounts.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はパラメータを持つmy redirect_uriです。つまり、ブラウザをリダイレクトする代わりにoauthが返してくれました。私はそこから行くことができます。
トピックにする質問を編集してください:問題を複製する** complete ** [mcve]を含めてください。通常、* manifest.json *、バックグラウンドの*や*コンテンツスクリプトを含みます。デバッグの助けを求める質問(「**なぜこのコードは動作しないのですか?**」)には、以下が含まれていなければなりません:►必要な動作、►特定の問題またはエラー*、および►問題を再現するのに必要な最短コード自体**。明確な問題文がない質問は、他の読者にとって有用ではありません。参照してください: "**どのように[mcve] **を作成するか"、[ここで私はどんな話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask] – Makyen
この方法はまだあなたのために働いていますか? – seesoe