Я делаю софт о Unity для наших партнеров. У них есть своя платформа с авторизацией oauth2 с их сайта.
Мне нужно реализовать эту логику:
Шаг 1: отправка на сервер по конечной точке аутентификации client_id, redirect_uri, response_type, scope.
Шаг 2: пользователь должен авторизоваться в браузере с помощью логина и пароля, которые используются для входа на свой сайт
Шаг 3: сервер дает мне код на URI перенаправления, как это "https://localhost:port/?code="code"",
Шаг 4: Я беру этот код и отправляю конечной точке токена новую форму с этим кодом
Проблема в том, что в браузере открыта вкладка, где пользователь может авторизоваться (Шаг 2), а затем перейти к перенаправлению (Шаг 3). Я пытался использовать Application.OpenURL (www.url); но после авторизации пользователя я вижу в личной области браузера пользователя
Я написал этот код, в Debug у меня есть HTML-код нужной страницы
void Start()
{
client_id = "<CLIENTID>";
client_secret = "<CLIENTSECRET>";
redirect_uri = "https://localhost:<PORT>";
StartCoroutine(SendAuthRequest());
}
IEnumerator SendAuthRequest()
{
path = "http://<URL>/connect/authorize";
WWWForm form = new WWWForm();
form.AddField("client_id", client_id);
//form.AddField("client_secret", client_secret);
form.AddField("grant_type", "authorization_code");
form.AddField("redirect_uri", redirect_uri);
form.AddField("response_type", "code");
form.AddField("scope", "api");
WWW wwwRequest = new WWW(path, form.data);
//UnityWebRequest www = UnityWebRequest.Post(path, form);
yield return wwwRequest;
Debug.Log(wwwRequest.text);