У меня есть приложение на основе Xamarin, которое использует пакет Microsoft.OneDriveSDK nuget с версией 1.x. В этом приложении я управляю файлом OAuth с помощью Xamarin.Auth и тем самым получаю access_token из этой структуры.Как перенести Microsoft.OneDriveSDK v1 в v2?
С OneDriveSDK 1.x я мог бы предоставить этот токен доступа, переопределив несколько классов, а затем никогда не использовал API, пытающийся извлечь токен.
Теперь я хотел перейти на версию 2 и заметил, что предыдущие классы были заменены, и теперь API теперь использует пакет Microsoft.Graph nuget. Поэтому я должен был реализовать интерфейс IAuthenticationProvider и сделал это так:
public async Task AuthenticateRequestAsync(HttpRequestMessage request)
{
if (!string.IsNullOrEmpty(MicrosoftLiveOAuthProvider.Instance.AccessToken))
{
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", MicrosoftLiveOAuthProvider.Instance.AccessToken);
}
}
код называется и правильно обеспечивает маркер аутентификации заголовков запроса. Но как только SDK пытается использовать токен, я получаю исключение:
Исключение типа «Microsoft.Graph.ServiceException» было выбрано.
Код: InvalidAuthenticationToken
Сообщение: CompactToken разбор неудачно с кодом ошибки: -2147184118
Теперь с помощью Google для этого сообщения всегда говорил, что маркер не JWT совместимый и SDK будет затем использовать его в качестве токен учетной записи Microsoft. Но если это так, я задаюсь вопросом, почему он не работает с V2, но работает с V1.
Аутентификация осуществляется против:
Любая помощь очень Mich оценили!
Спасибо большое за нашли время для этого всеобъемлющего ответа! Тем временем я заметил, что в области, где я зарегистрировал приложение для OneDrive, теперь можно определить также разрешения Microsoft Graph, такие как делегирование и учетные данные приложения. Я уверен, что это тоже нужно будет установить. Кроме того, в описании указано, что конечная точка V2 Auth - это Azure AD или Microsoft Live. В настоящее время я проверяю подлинность только на Microsoft Live, поэтому основное преимущество MS Graph исчезло. – eX0du5
Я использую Live acct для oauth2 против, мне жаль, что не было возможности использовать Graph с C# OneDrive SDK, как вы можете с их версией Android. Но пропуск с его использованием для входа в систему и реализация только двух интерфейсов прекрасно работает. К счастью, компоновщик xamarin удаляет весь неиспользуемый код Graph и размер приложения управляется – SushiHangover