簡體   English   中英

OAuth2身份驗證js客戶端

[英]OAuth2 authentication js client

我正在開發一個Outlook插件。 它基於JS,使用OAuth2對用戶進行身份驗證。 我正在使用poupp窗口打開google,azure等授權頁面,成功登錄后,我將其關閉。 回到應用程序中,我正在彈出窗口的父窗口上注冊一個回調函數,該窗口可通過window.opener屬性進行訪問。 一切正常,但是我想支持移動設備。 要通過OWA for Devices應用運行這種插件,可以通過Play商店下載。 問題在於window.opener屬性始終為null。 因此,我無法調回應用程序。 還有其他方法可以回調應用程序嗎? 如何訪問彈出窗口的父窗口?

解決該問題的正確方法是通過WebSockets。 您可以確保將憑據發布到單個客戶端。 在您的Web插件中,啟動一個套接字

加載項-客戶端Javascript應該如下所示:

var socket = io('http://localhost');
var email = Office.context.mailbox.userProfile.email;
socket.on('oauth_providerName_'+email, function(data){
  // Callback when you receive the credential data.
});

// Pop the user to the OAuth frame

將用戶從OAuth體驗重定向回您的網站后,

網站-客戶端Javascript

var socket = io('http://localhost');
var email = Office.context.mailbox.userProfile.email;
socket.emit('oauth_cred_providerName_'+email, {credentials});

服務器-根據您選擇的語言,將憑據數據通過套接字傳遞給外接程序客戶端。

因此,理想情況下,這里有3個組成部分:

  1. 外接Java腳本,用於偵聽帶有特定數據的憑據套接字(可以是cookie guid或諸如電子郵件地址之類的唯一值)
  2. OAuth完成后將重定向到的網頁,它將通過套接字將憑據(訪問令牌/刷新令牌)傳遞給服務器。 (您仍然可以將其托管為與外接程序一起部署的頁面,這里重要的是它應該具有單獨的JS文件)
  3. 服務器套接字,它將獲取憑據並將其傳遞給外接程序客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM