是否可以从 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。这个过程是这样的:
为Request an Authorization Code手动构造URL并粘贴到浏览器的地址中。
当浏览器提示时,选择允许访问。
当浏览器重定向到重定向URL(为Smartsheet中的app指定)时,手动捕获(例如记下||保存)查询字符串参数/值在response URL.
使用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。为此,请完成以下步骤:
使用 Smartsheet 网络 UI,在您的 Smartsheet 帐户中创建一个新用户,Windows 服务将使用该用户访问 Smartsheet。
使用 Smartsheet 网络 UI,授予新用户适当级别的访问权限,以访问它需要的任何对象(例如,工作区、工作表、报告等)访问。
以新用户身份登录 Smartsheet web UI,然后按照 API 文档的 Raw Token Requests 部分中的说明生成新访问权限令牌。 Smartsheet 中此用户帐户的此访问令牌 'belongs' -- 任何指定此令牌的 API 请求都将被视为由此用户在 Smartsheet 中发出。
我有一个 .NET Core Windows (Worker) 服务需要连接到 Smartsheet,我想知道在没有用户界面的情况下是否可以实现 OAuth?
Smartsheet OAuth 流程需要一个回调 URI,用户在进行身份验证后将被转发到该 URI,但我的服务没有界面或实时用户...在这种情况下,需要进行身份验证的用户是服务本身。
我可以通过这样的服务以编程方式完成 OAuth 流程吗?
使用 OAuth:
从技术上讲,您可以在这种情况下使用 OAuth——但只有在您手动获得初始访问令牌之后——例如,结合使用浏览器和 Postman 等 API 工具完成生成初始令牌的 OAuth flow。这个过程是这样的:
为Request an Authorization Code手动构造URL并粘贴到浏览器的地址中。
当浏览器提示时,选择允许访问。
当浏览器重定向到重定向URL(为Smartsheet中的app指定)时,手动捕获(例如记下||保存)查询字符串参数/值在response URL.
使用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。为此,请完成以下步骤:
使用 Smartsheet 网络 UI,在您的 Smartsheet 帐户中创建一个新用户,Windows 服务将使用该用户访问 Smartsheet。
使用 Smartsheet 网络 UI,授予新用户适当级别的访问权限,以访问它需要的任何对象(例如,工作区、工作表、报告等)访问。
以新用户身份登录 Smartsheet web UI,然后按照 API 文档的 Raw Token Requests 部分中的说明生成新访问权限令牌。 Smartsheet 中此用户帐户的此访问令牌 'belongs' -- 任何指定此令牌的 API 请求都将被视为由此用户在 Smartsheet 中发出。