2013-09-25 123 views
1


我正在爲學校構建一個Chrome擴展,並且需要使用moodle進行身份驗證,這意味着我需要安裝OAuth或OpenID,我打開一個頁面到moodle,然後用戶登錄在/批准該應用程序,然後返回一個令牌,然後我可以使用它來進行普通的moodle Web服務調用。這可能嗎?OAuth - 使用Moodle登錄

感謝, 阿里

回答

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中。

+0

我不太清楚你的意思,是的,代碼會非常有幫助。 –

+0

什麼是'bgOauth',什麼是authURL? –

+0

bgOauth是Oauth方法的一個小集合,我在處理生成Oauth URL時需要對它們進行簽名。 authURL是根據上述描述生成的URL,它是我發送請求的地址,這可能對您有所不同,我對moodle沒有經驗。 – jbaldwin