1


我正在为一所学校构建一个 chrome 扩展,它需要使用 moodle 进行身份验证,这意味着我需要一个 OAuth 或 OpenID 之类的设置,我打开一个页面来 moodle,然后用户登录/批准该应用程序,然后是一个令牌返回,然后我可以将其用于正常的 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 回答