Какой способ доступа к OneDriveAPI с мобильных устройств рекомендует Microsoft?IOS

Программируем под IOS
Ответить
Anonymous
 Какой способ доступа к OneDriveAPI с мобильных устройств рекомендует Microsoft?

Сообщение 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);


Подробнее здесь: https://stackoverflow.com/questions/793 ... le-devices
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»