当响应接收到Webhook通知而尝试自动执行API请求时,我似乎忽略了一些关于身份验证的基本知识,我们将不胜感激。
我很乐意通过oauth2授权代码身份验证在浏览器中创建一个可与Exact Online API一起使用的自定义应用程序。我还设置了Webhooks,以便Exact Online将通知发送到URL,然后该URL接收,验证和保存数据,而这无需浏览器连接或oauth2身份验证即可进行。但是,我想在收到Webhook通知时运行API查询,以便它们自动运行,并且我不知道如何获取oauth2授权代码。
Webhook数据很容易接收(无需验证),如下所示:
http_response_code(200); // Tell Exact I have received the data
$input = file_get_contents("php://input");
我可以轻松地捕获网页上的输入数据,该网页没有打开到Exact Online的开放的oauth2-authenticated通道,并且Webhook通知无需打开浏览器实例即可进行。另外,通过发送
可以轻松打开经过oauth2认证的API链接。$authCodeRequest = "https://start.exactonline.co.uk/api/oauth2/auth?response_type=code&client_id=%-my-client-id-%7D&redirect_uri=my-site-redirect";
header('Location: ' . $authCodeRequest);
die('Request failed');
,并使用$ _GET ['code']获取用于访问令牌和刷新令牌的请求中的授权代码。 但是,如何在收到Webhook时运行API查询? -我看不到如何允许在浏览器中未打开的页面和精确在线之间进行访问。
我尝试过在接收Webhook的页面上添加授权请求:
$authCodeRequest = "https://start.exactonline.co.uk/api/oauth2/auth?response_type=code&client_id=%-my-client-id-%7D&redirect_uri=my-site-redirect";
header('Location: ' . $authCodeRequest);
die(fwrite('Request failed'));
这是有道理的,因为该页面无法在随机浏览器中神奇地打开以请求用户登录。
我还尝试使API页面成为接收Webhook通知的URL,然后在运行Webhook事件之前对页面进行身份验证。这也行不通,因为webhook通知将发送到页面的其他实例。
Exact Online不允许用户凭据身份验证-仅用于隐式和授权代码身份验证-这两个都需要登录。收到通知后,如何进行身份验证以允许处理Webhooks?或者,我可以看一些在线资源来了解我所缺少的是什么吗?
答案 0 :(得分:0)
您需要经过一次OAuth流程才能获取令牌。保存刷新令牌。 当您收到Webhook通知时,请获取带有先前保存的刷新令牌的新令牌。不要忘记保存新的刷新令牌,因为旧的令牌不再有效。 获取数据。