Я создаю приложение .NET MAUI, которое в основном будет работать на iOS, но позже его можно будет запустить и на устройствах Android. Мне нужно создать папки и файлы в OneDrive. После некоторых исследований я обнаружил, что мне нужно реализовать GraphServiceClient для доступа к OneDrive. Я искал способ разрешить пользователю войти в систему. В документации Microsoft вам нужно выбрать подход, я выбрал интерактивного поставщика, который рекомендуется для мобильных приложений: https://learn.microsoft.com/en-us/graph /sdks/choose-authentication-providers?tabs=csharp#interactive-provider
Но я столкнулся со следующей ошибкой, что платформа не поддерживается:
[chromium] [INFO:CONSOLE(1)] «Ошибка аутентификации InteractiveBrowserCredential: операция не поддерживается на этой платформе». ... -> это происходит в строке: activeCredential.Authenticate(new TokenRequestContext(scopes));
Могу ли я также добавить, что в Windows это работает без каких-либо проблем. Это код, который я реализовал на данный момент:
string redirectUri = "http://localhost"; #if ANDROID || IOS redirectUri = $"msal{clientId}://auth"; #endif
var tokenCacheOptions = new TokenCachePersistenceOptions
{
Name = "msal_cache",
UnsafeAllowUnencryptedStorage = false
};
var options = new InteractiveBrowserCredentialOptions
{
TenantId = "common",
ClientId = clientId,
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
RedirectUri = new Uri(redirectUri),
TokenCachePersistenceOptions = tokenCacheOptions
};
InteractiveBrowserCredential interactiveCredential;
if (File.Exists(_authRecordPath)) //Check if token already exists in cache
{
var authRecordJson = File.ReadAllText(_authRecordPath);
AuthenticationRecord authRecord;
using (var stream = File.OpenRead(_authRecordPath))
{
authRecord = AuthenticationRecord.Deserialize(stream);
}
options.AuthenticationRecord = authRecord;
interactiveCredential = new InteractiveBrowserCredential(options);
UserLoggedIn = true;
}
else //promp login
{
interactiveCredential = new InteractiveBrowserCredential(options);
var authRecord = interactiveCredential.Authenticate(new TokenRequestContext(scopes));
using (var stream = File.Create(_authRecordPath))
{
authRecord.Serialize(stream);
}
UserLoggedIn = true;
}
_graphServiceClient = new GraphServiceClient(interactiveCredential, scopes);
Подробнее здесь: https://stackoverflow.com/questions/793 ... le-devices
Какой способ доступа к OneDriveAPI с мобильных устройств рекомендует Microsoft? ⇐ IOS
Программируем под IOS
1734967319
Anonymous
Я создаю приложение .NET MAUI, которое в основном будет работать на iOS, но позже его можно будет запустить и на устройствах Android. Мне нужно создать папки и файлы в OneDrive. После некоторых исследований я обнаружил, что мне нужно реализовать GraphServiceClient для доступа к OneDrive. Я искал способ разрешить пользователю войти в систему. В документации Microsoft вам нужно выбрать подход, я выбрал интерактивного поставщика, который рекомендуется для мобильных приложений: https://learn.microsoft.com/en-us/graph /sdks/choose-authentication-providers?tabs=csharp#interactive-provider
Но я столкнулся со следующей ошибкой, что платформа не поддерживается:
[chromium] [INFO:CONSOLE(1)] «Ошибка аутентификации InteractiveBrowserCredential: операция не поддерживается на этой платформе». ... -> это происходит в строке: activeCredential.Authenticate(new TokenRequestContext(scopes));
Могу ли я также добавить, что в Windows это работает без каких-либо проблем. Это код, который я реализовал на данный момент:
string redirectUri = "http://localhost"; #if ANDROID || IOS redirectUri = $"msal{clientId}://auth"; #endif
var tokenCacheOptions = new TokenCachePersistenceOptions
{
Name = "msal_cache",
UnsafeAllowUnencryptedStorage = false
};
var options = new InteractiveBrowserCredentialOptions
{
TenantId = "common",
ClientId = clientId,
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
RedirectUri = new Uri(redirectUri),
TokenCachePersistenceOptions = tokenCacheOptions
};
InteractiveBrowserCredential interactiveCredential;
if (File.Exists(_authRecordPath)) //Check if token already exists in cache
{
var authRecordJson = File.ReadAllText(_authRecordPath);
AuthenticationRecord authRecord;
using (var stream = File.OpenRead(_authRecordPath))
{
authRecord = AuthenticationRecord.Deserialize(stream);
}
options.AuthenticationRecord = authRecord;
interactiveCredential = new InteractiveBrowserCredential(options);
UserLoggedIn = true;
}
else //promp login
{
interactiveCredential = new InteractiveBrowserCredential(options);
var authRecord = interactiveCredential.Authenticate(new TokenRequestContext(scopes));
using (var stream = File.Create(_authRecordPath))
{
authRecord.Serialize(stream);
}
UserLoggedIn = true;
}
_graphServiceClient = new GraphServiceClient(interactiveCredential, scopes);
Подробнее здесь: [url]https://stackoverflow.com/questions/79303512/what-is-microsofts-recommended-way-to-access-onedriveapi-from-mobile-devices[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия