Выдавать себя за пользователя с помощью 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
}