是否可以从 Windows 服务使用 Smartsheet OAuth?

Is it possible to use Smartsheet OAuth from a Windows Service?

我有一个 .NET Core Windows (Worker) 服务需要连接到 Smartsheet,我想知道在没有用户界面的情况下是否可以实现 OAuth?

Smartsheet OAuth 流程需要一个回调 URI,用户在进行身份验证后将被转发到该 URI,但我的服务没有界面或实时用户...在这种情况下,需要进行身份验证的用户是服务本身。

我可以通过这样的服务以编程方式完成 OAuth 流程吗?

使用 OAuth:

从技术上讲,您可以在这种情况下使用 OAuth——但只有在您手动获得初始访问令牌之后——例如,结合使用浏览器和 Postman 等 API 工具完成生成初始令牌的 OAuth flow。这个过程是这样的:

  1. Request an Authorization Code手动构造URL并粘贴到浏览器的地址中。

  2. 当浏览器提示时,选择允许访问

  3. 当浏览器重定向到重定向URL(为Smartsheet中的app指定)时,手动捕获(例如记下||保存)查询字符串参数/值在response URL.

  4. 使用Postman or similar tool, issue a Request Access Token请求(提示:其中一个必需的输入参数是您在上一步中获得的authorization code)。

调用 请求访问令牌 操作的成功响应将包含一个 access_token,您可以使用它通过 API 访问 Smartsheet,以及一个refresh_token 您需要在令牌过期前刷新令牌(在 expires_in 时间内 -- 大约 7 天)。

注意: 您必须在访问令牌过期之前以编程方式刷新访问令牌(使用 Refresh an Access Token 操作)。只要您在每个新令牌过期之前以编程方式不断刷新它,您就不必再次手动执行任何操作。但是,如果令牌过期 - 生成新令牌的唯一方法是完成我在上面描述的手动步骤。

使用原始令牌请求:

话虽如此,对于您所描述的场景(连接到 Smartsheet 的独立服务)来说 not[=74 会简单得多=] 使用 OAuth 而不是只使用 raw token request。为此,请完成以下步骤:

  1. 使用 Smartsheet 网络 UI,在您的 Smartsheet 帐户中创建一个新用户,Windows 服务将使用该用户访问 Smartsheet。

  2. 使用 Smartsheet 网络 UI,授予新用户适当级别的访问权限,以访问它需要的任何对象(例如,工作区、工作表、报告等)访问。

  3. 以新用户身份登录 Smartsheet web UI,然后按照 API 文档的 Raw Token Requests 部分中的说明生成新访问权限令牌。 Smartsheet 中此用户帐户的此访问令牌 'belongs' -- 任何指定此令牌的 API 请求都将被视为由此用户在 Smartsheet 中发出。