1


学校用の chrome 拡張機能を構築しています。moodle で認証する必要があります。つまり、OAuth または OpenID のようなセットアップが必要です。moodle のページを開いて、ユーザーがアプリにログイン/承認し、トークンを取得します。が返され、これを通常のムードル Web サービス呼び出しに使用できます。これは可能ですか?

ありがとう、アリ

4

1 に答える 1

1

oauth を使用して拡張機能を認証しようとすると、同様の問題が発生します。使用したフローは、最初にトークンが保存されているかどうかを確認するものでした。保存されていない場合は、バックグラウンド ページから新しいタブを開きます。つまり、拡張機能が最初に実行されたときに実行されます。インストールされていますが、トークンがそこにある場合はリクエストを実行しますが、承認が完了したらタブを閉じるようにユーザーに依頼し、作成後にリスナーを設定したところ、プロセスが完了し、リクエストを行うことができました。

このセクションのコードが必要な場合は、喜んで投稿します。

幸運を

アップデート:

トークンが保存されているかどうかを確認します。

if(localStorage.token){
    if(localStorage.secret){

そうでない場合:

else{
    var authURL = bgOauth.requestTokenCall();
    var req = new XMLHttpRequest();
    req.overrideMimeType("application/json");
    req.onload = bgOauth.processRequestTokenData;
    req.open("get", authURL, true);
    req.send();
    console.log('sent')
}

次に、これからの応答を処理します。すべて問題がなければ、新しいタブを開きます。

startPopup : function(destinationurl) {

    chrome.tabs.create({url : destinationurl}, 
    function(tab){bgOauth.newTabId = tab.id})
    alert(Instructions)     
    chrome.tabs.onRemoved.addListener(function(tabId)
    {
        console.log('oh no, closed');
        if(tabId == bgOauth.newTabId){
            console.log('freaking sweet!');
            bgOauth.handleApproval()
        }   
        else{
            return false;
        }
    })

その後、承認プロセスを完了できます。プリフォーム リクエストは、資格情報を必ず localStorage に保存します。

于 2013-09-25T11:16:57.263 に答える