각도 2 (전자) 응용 프로그램에서 OAuth2 인증을 구현하려고합니다.현재 창에서 전자 응용 OAuth2
나는 사용자가 '로그인'버튼을 클릭 한 후 호출되는 팝업을 통해이를 달성합니다.
팝업 사용자가 자신의 자격 증명을 입력하고 액세스 허용 및 확인 코드가 반환되며 팝업없이 수행 할 수없는 리디렉션 요청을받을 수 있습니다.
return Observable.create((observer: Observer<any>) => {
let authWindow = new electron.remote.BrowserWindow({ show: false, webPreferences: {
nodeIntegration: false
} });
authWindow.maximize();
const authUrl = AUTHORIZATION_WITH_PROOF_KEY_URL
+ `?client_id=${CLIENT_ID}&response_type=code&scope=api_search&`
+ `redirect_uri=${REDIRECT_URL}&code_challenge=${challenge}&code_challenge_method=S256`;
if (this.clearStorage) {
authWindow.webContents.session.clearStorageData({},() => {
this.clearStorage = false;
authWindow.loadURL(authUrl);
authWindow.show();
});
} else {
authWindow.loadURL(authUrl);
authWindow.show();
}
authWindow.webContents.on('did-get-redirect-request', (event, oldUrl, newUrl) => {
const code = this.getCode(newUrl, authWindow);
if (!code) {
this.clearStorage = true;
return;
}
this.requestToken({
grant_type: 'authorization_code',
code: code,
code_verifier: verifier,
redirect_uri: REDIRECT_URL
})
.subscribe((response: { access_token: string, refresh_token: string }) => {
observer.next(response);
});
});
// Reset the authWindow on close
authWindow.on('close',() => {
authWindow = null;
});
});
을하고 당신은 내가 새로운 BrowserWindow을 만드는거야 위의 코드에서 볼 수 있듯이 : 내가 잡을 수있어 그 접근 방식
new electron.remote.BrowserWindow({ show: false, webPreferences: {
nodeIntegration: false
} });
과 함께 여기
작동 구현
authWindow.webContents.on('did-get-redirect-request', (event, oldUrl, newUrl) => {
....
}
으로 시작하는 리디렉션 리디렉션 요청을 처리하지만이 문제를 해결할 수 없습니다. 팝업 (모달). '(did- 나는 현재 창에서 원격 URL에서 로그인 화면을 얻을 내 방식으로
return Observable.create((observer: Observer<any>) => {
let authWindow = electron.remote.getCurrentWindow();
const authUrl = AUTHORIZATION_WITH_PROOF_KEY_URL
+ `?client_id=${CLIENT_ID}&response_type=code&scope=api_search&`
+ `redirect_uri=${REDIRECT_URL}&code_challenge=${challenge}&code_challenge_method=S256`;
if (this.clearStorage) {
authWindow.webContents.session.clearStorageData({},() => {
this.clearStorage = false;
authWindow.loadURL(authUrl);
});
} else {
authWindow.loadURL(authUrl);
}
authWindow.webContents.on('did-get-redirect-request', (event, oldUrl, newUrl) => {
debugger;
// this is not called, I'm not able to catch up redirect request
});
// Reset the authWindow on close
authWindow.on('close',() => {
authWindow = null;
});
});
하지만 문제는 내가 가진 요청을 리디렉션 잡을 수 아니에요입니다 : 여기
내 시도 get-redirect-request ') 이벤트를 수신합니다.나는 'will-navigate'및 많은 다른 것들도 시도했다.
모든 종류의 도움을 주시면 감사하겠습니다.
감사