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