Использование класса Toknheelper SharePoint 2013, когда нет httpcontext.Courent

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/62205

Вопрос

Приложения

SharePoint 2013 в Visual Studio имеют класс токелеров, который упрощает использование OAuth для подключения к ClientContext ClientContext SharePoint 2013. Я использую этот класс для удаленного подключения к SharePoint 2013 (на офисе 365).

Я могу использовать метод TokenHelper.getClientContextWithAuthOrisionCodeCodeWithAuthorizationCode, чтобы получить клиентконкультектую с помощью кода авторизации OAUTH при запуске в веб-приложении, который имеет httpcontext.Courent. Однако, если я использую этот же код в приложении консоли или другое контекст, где нет httpcontext.Courent, удаленный сервер SharePoint 2013 возвращает (400) плохой запрос.

Я сузил проблему до Microsoft.odyteityModel.s2s.protocols.oauth2.oauth2s2sclient.issue (). Когда есть httpContext, он работает, но без него ошибка (400) ошибка запроса.

Я попробовал использовать Framework MOQ, чтобы подделать httpContext, но это тоже не работает.

Сбой происходит в методе TokenHelper. GetCCessToken здесь:

OAuth2S2SClient client = new OAuth2S2SClient();
OAuth2AccessTokenResponse oauth2Response;
try
{
    oauth2Response =
        client.Issue(AcsMetadataParser.GetStsUrl(realm), oauth2Request) as OAuth2AccessTokenResponse;
}
.

Любые идеи?

Это было полезно?

Решение

Я наконец мог выяснить, что я делал не так:

1) Код авторизации, возвращаемый при создании соединения OAUTH, предназначен только для этого сеанса браузера.Таким образом, почему я не мог повторно использовать этот код авторизации позже в задних командах или в новых сессиях браузера.

2) На странице перенаправления я использовал код авторизации, возвращаемый для создания нового токена доступа.От токена доступа я мог бы получить токен обновления.

3) Токен обновления - это то, что я могу хранить и повторно использовать, чтобы создать контексты клиента из заднего кода или новых сеансов браузера.

Так, в двух словах, чтобы повторно использовать токен OAuth, вы должны использовать токен обновления, а не код авторизации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top