Google以外のAPIのOAuth2を使用して自分の内線を使用するときに、chrome.identity.launchWebAuthFlow()
を使用してユーザーを誘導しています。タブとしてchrome.identity.launchWebAuthFlowを開きます(Chrome拡張機能)
認証が機能しても、ユーザーの認証トークンを効果的に取得できますが、ブラウザのUIとURLバーがない新しいウィンドウで完全に開くことは嫌です。
理想的には、私は拡張機能のポップアップウィンドウ内でこのOAuthダンスを行うことができます。それでも問題が解決しない場合は、別のタブでこのOAuthイベントを少なくとも発生させることができます。
今すぐユーザーが拡張機能をクリックすると、ポップアップが開きます。ポップアップには、OAuthを有効にするためにクリックするボタンがあります。ここから、他のウィンドウ全体がポップアップしますが、代わりにポップアップ(上記を参照)内にとどまりたいと思います。
どうすればいいですか?私はそれについて多くの話をしましたが、解決策はありません。
ありがとうございます!
manifest.jsonを
{
"manifest_version": 2,
"name": "Extension",
"version": "0.0.1",
"permissions": [
"identity",
"tabs",
"http://*/*",
"https://*/*"
],
"browser_action":{
"default_icon": "icon.png",
"default_popup" : "popup.html"
},
"background": {
"scripts": ["background.js"]
}
}
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse){
if(request.message==="start_oauth"){
chrome.identity.launchWebAuthFlow(
{
"url" : "https://example.com/manage/oauth2/authorize?callback_uri="
+encodeURIComponent(<callback_uri>)
+"&client_id=" + <client_id>
+"&response_type=code",
"interactive" : true
},
function(redirect_url){
var auth_token = redirect_url.substr(<callback_uri>.length+6);
}
);
}
}
);
popup.js
function startOAuth(){
chrome.runtime.sendMessage({"message": "start_oauth"});
}
document.getElementById("login").addEventListener("click", startOAuth);
popup.html
<html>
<body>
<button id="login"> Click here to log in</button>
</body>
<script src="popup.js"></script>
</html>
このウォークスルーは、残念ながらOAuth1と古いバージョンでは残念です。 – user2494584
タブの操作は同じになります。 OAuth 1のコードをOAuth 2のコードに置き換えてください。 – abraham