Выдавать себя за пользователя с помощью C# SDK

Я использую новый C# SDK и могу успешно создать соединение с этим кодом:

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

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

Это хорошо работает, если я только хочу получить доступ к данным в своей учетной записи Smartsheet. Но я создаю приложение, которое необходимо для создания листов, которые принадлежат другим пользователям в моей компании. Используя SDK, как мне создать соединение, которое выполняется под именем другого пользователя (без маркера доступа, принадлежащего этому другому пользователю)?

1 ответ

Решение

Используя токен, принадлежащий пользователю Sys Admin, вы можете выдать себя за другого пользователя, используя "Assume-User", как описано здесь: http://smartsheet-platform.github.io/api-docs/?csharp.

Как видно из документации, код C# для создания соединения с использованием "Assume-User" выглядит следующим образом:

// 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 (call gets executed as "john.doe@smartsheet.com").
UserProfile userProfile = smartsheet.UserResources.GetCurrentUser();

Ответ на этот вызов будет содержать адрес электронной почты, имя и идентификатор пользователя, которым был выполнен вызов. Например:

{
    "email": "john.doe@smartsheet.com",
    "firstName": "John",
    "lastName": "Doe",
    "id": 48569348493401200
}
Другие вопросы по тегам