使用 C# SDK 模拟用户

Impersonate user with C# SDK

我正在使用新的 C# SDK,并且可以使用以下代码成功创建连接:

Token token = new Token();
token.AccessToken = "MYTOKEN";

SmartsheetClient smartsheet = new SmartsheetBuilder().SetAccessToken(token.AccessToken).Build();

如果我只想访问我自己的 Smartsheet 帐户中的数据,这很有效。但我正在构建一个应用程序,该应用程序需要创建我公司其他用户拥有的表格。使用 SDK,如何创建以另一个用户的身份运行的连接(没有属于该其他用户的访问令牌)?

使用属于系统管理员用户的令牌,您可以使用 "Assume-User" 来模拟另一个用户,如下所述:http://smartsheet-platform.github.io/api-docs/?csharp#assume-user

如文档所示,使用 "Assume-User" 创建连接的 C# 代码如下:

// Set access token.
Token token = new Token();
token.AccessToken = "SYS_ADMIN_TOKEN";

// Create the 'smartsheet' object and set the 'Assume-User' header value to "john.doe@smartsheet.com".
SmartsheetClient smartsheet = new SmartsheetBuilder().SetAccessToken(token.AccessToken).SetAssumedUser("john.doe@smartsheet.com").Build();

创建连接后,您可以通过对该连接执行 "Get Current User" 调用来验证您是否作为预期用户进行连接:

// Get current user (call gets executed as "john.doe@smartsheet.com").
UserProfile userProfile = smartsheet.UserResources.GetCurrentUser();

对此调用的响应将包含执行调用的用户的电子邮件、姓名和 ID。例如:

{
    "email": "john.doe@smartsheet.com",
    "firstName": "John",
    "lastName": "Doe",
    "id": 48569348493401200
}