0

Gmail の oauth2 をポップアップで開きnewWindow = window.open(...)、ユーザーが入力を完了して「許可」を押すと、トークンが取得されて保存されるサーバーにリダイレクトされます。最後に、サーバーは「エラー」または「成功」を返すため、ポップアップにはそれが含まれます。今Angular側でこれを実行しています。

checkConnect = setInterval(function() {
    try{
      if(newWindow.document.body.innerText === 'Success') {
        console.log('Success');
        newWindow.close();
        window.clearInterval(checkConnect);
      }else if(newWindow.document.body.innerText === 'Error') {
        console.log('We had an error!');
        newWindow.close();
        window.clearInterval(checkConnect);
      }else if(newWindow.closed) {
        console.log('WINDOW WAS closed');
        window.clearInterval(checkConnect);
      }
    }catch(e) {
      //console.log(e);
    }
}, 100);

これはうまくいくこともあれば、うまくいかないこともあります。このコードは、Dropbox などの他の Oauth プロバイダーにも再利用しています。理由はありますか?

4

1 に答える 1

0

ポップアップを使用してもわかりませんでした。ただし、同じページで oauth ページを開き、後でユーザーに表示させたいページにリダイレクトするだけで、この問題を克服することができました。

また、Google が提供するライブラリがあり、ポップアップで開いて終了を処理します。

于 2016-03-19T17:13:39.600 に答える