我正在尝试制作一个Gogle Chrome扩展程序,要求用户授权使用OAuth 2.0的SugarCRM 7.5实例,我需要存储检索到的访问令牌。我可能需要更多关于launchWebAuthFlow
如何运作的说明。
首先,我可以使用返回访问权限和刷新令牌的POST请求(不是GET请求)从SugarCRM检索访问令牌。
当我尝试使用下面的代码时,我不断收到错误:“无法加载授权网址”,当我检查后台控制台时(我已经知道我的身份验证网址错误)。即使您不了解SugarCRM,也可以获得任何帮助。只是一个可以让我开始的一般答案非常感谢。
的manifest.json
{
"name": "Auth Sample",
"version": "1",
"manifest_version": 2,
"minimum_chrome_version": "29",
"key": "<long key>",
"app": {
"background": {
"scripts": ["background.js"]
}
},
"permissions": [
"identity",
"https://<sugar instance>/*"
]
}
Background.js
chrome.identity.launchWebAuthFlow(
{'url': '<url-to-do-auth>', 'interactive': true},
function(redirect_url) { console.log(redirect_url); });
我的网址肯定不会在这里工作,但它是这样的:
var client_id = '<client id from Oauth 2.0>';
var redirectUri = chrome.identity.getRedirectURL("sugarcrm");
var url = "https://<sugar instance base url>/rest/v10/oauth2/token?client_id=" + client_id + "&callbackURL=" + redirectUri + "&response_type=token"
什么是url-to-do-auth(这是对SugarCRM进行常规登录(用户名和密码)的URL,还是通过REST API进行登录的GET请求)
我的SugarCRM实例没有UI网络身份验证流程。是否可以从应用程序创建一个或者应该在服务器上创建一个?
我只能发出POST请求以获取访问令牌。这仍然适用于launchWebAuthFlow吗?
更新
我最终使用本地chrome.storage api存储令牌,并且只存储了刷新令牌,每次运行应用程序时都会不断获取新的访问令牌(我认为它比仅存储访问令牌更安全将强制它始终保持变化而不传递其他凭证)
在launchWebAuthFlow上搜索更多内容之后。我发现url launchWebAuthFlow作为参数将启动一个托管在服务器上的网页(交互式参数设置为true),该网页将允许用户登录并在成功时返回访问令牌。此URL实际上是restful服务器上的端点。您需要创建此端点,该端点将是带有一些参数的get请求,包括callbackURL,client_id和response_type。然后它将响应另一个将是post请求的函数,并将使用用户名和密码。如果凭据正确,它将返回访问令牌作为callbackURL中的参数(包含扩展ID的chrome扩展特定URL)。
如果我错了,请随时纠正我或添加一些东西。