Я пытаюсь подключить свое приложение для Mac (написанное на С#/Visual Studio для Mac) к Graph API от Microsoft.
В Windows я могу использовать ADAL и выполнять такие операции, как:
PublicClientApplication myApp = new PublicClientApplication(MYID);
string Scope = "User.ReadBasic.All User.Read";
var result = await myApp.AcquireTokenAsync(Scope.Split(' '));
return result.AccessToken;
В то время как тот же подход на Mac приводит к исключению «не реализовано».
Я пробовал несколько способов, таких как ADFSApi и MicrosoftLiveConnectApi от SimpleAuth, но безуспешно.
Кто-нибудь знает, как выполнить эту аутентификацию? С другой стороны, я очень часто нахожу руководства, использующие браузер... Как я могу прочитать ответ браузера от приложения с кодом для получения токена?
------------- ОБНОВИТЬ ---------------------
После нескольких часов работы я реализовал альтернативный поток. В основном, когда нажата кнопка входа, я выполняю переход к окну только с WebView.
public override void ViewDidLoad()
{
base.ViewDidLoad();
var webView = new WebKit.WebView(this.MainView.Frame, "officeWebView", "noName");
webView.MainFrameUrl = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?state=ltxzlgtghhxgpwuh&client_id=[MYID]&response_type=code&scope=User.ReadBasic.All%20User.Read&redirect_uri=msal[MYID]://auth";
webView.FinishedLoad += (sender2, e) =>
{
var url = ((WebKit.WebView)sender2).MainFrameUrl;
};
this.MainView.AddSubview(webView);
}
В конце входа в систему система выдает мне сообщение типа «Нет приложения для открытия MSAL [MYID] и т. Д. Поэтому я добавляю« привязку »в info.plist
Где на самом деле схема URL-адреса — MSAL[MYID].
Я реализовал метод OpenUrls в AppDelegate.cs.
public override void OpenUrls(NSApplication application, NSUrl[] urls)
{
Console.WriteLine("TEST!!!");
foreach(var url in urls)
Console.WriteLine(url);
base.OpenUrls(application, urls);
}
Но кажется, что OpenUrls НИКОГДА не запускается (никогда не печатал ни одной строки, никогда не попадал в точку останова).
Что случилось? И, если я успешно сделал это таким образом, как я могу перейти на грант IMPLICIT, чтобы сохранить секрет моего приложения в безопасности?