2
我使用chrome.identity.launchWebAuthFlow()
,當他們使用我的分機直接通過非谷歌的API的OAuth2用戶。打開chrome.identity.launchWebAuthFlow作爲接頭(Chrome擴展)
即使驗證工作,我可以有效地獲取用戶的身份驗證令牌,我不喜歡它在缺乏瀏覽器的用戶界面和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