Использование нового OAuth 2 в Box

Я пытаюсь использовать новый API аутентификации Box с OAuth. Я хотел бы использовать учетные данные учетной записи box, которую я сейчас использую для авторизации своего приложения.

Конфигурация OAuth запрашивает URI перенаправления, и я не знаю, что там нужно ввести. В предыдущем методе аутентификации был указан следующий URI: http://www.box.net/api/1.0/auth/{ticket}, но это было сделано после получения билета аутентификации.

Я новичок в OAuth, поэтому мой вопрос может быть немного очевидным... но я хотел бы знать, как выполнить аутентификацию с учетными данными пользователя учетной записи box.

Я делаю это в приложении Windows, поэтому я также хотел бы понять, как показать ответ на запрос.


person user1466502    schedule 15.12.2012    source источник


Ответы (2)


Когда я искал ответы на вопросы о создании приложения Box.net для настольных компьютеров, попытка получить аутентификацию при входе в систему заняла больше, чем следовало бы...

Поэтому я решил разместить на своем веб-сайте статью, в которой рассказывается о процессе создания настольного приложения C# .Net 4.0, которое может входить в систему и работать с их SDK. Это использует их новую систему входа OAuth 2.0.

Сначала мы отправляем первоначальный веб-запрос, используя стандартный объект HttpWebRequest, чтобы получить веб-страницу пользовательского интерфейса для входа в систему OAuth 2.0. Как только веб-ответ будет возвращен, мы преобразуем его в поток для использования нашим веб-браузером. URI перенаправления может быть любым URI на основе HTTPS.

string baseURI = "https://www.box.com/api/oauth2/authorize?";
string responseType = "&response_type=code";
string clientId = "&client_id=YOUR OWN CLIENT ID";
string redirectURI = "&redirect_uri=https://app.box.com/services/poc_connector"; 

var targetUri = new Uri(baseURI + responseType + clientId + redirectURI);
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(targetUri);

Чтобы внедрить поток в элемент управления веб-браузера, мы используем свойство документа

webBrowser1.DocumentStream = view;

Как только это будет сделано, все операции пользователя обрабатываются элементом управления веб-браузером. Для захвата токена аутентификации, когда пользователь нажимает кнопку «Предоставить доступ». Мы добавляем прослушиватель событий для события Navigated веб-браузеров.

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
    if (e.Url.AbsolutePath != "blank" && e.Url.ToString().Contains("&code="))
    {
        Token = e.Url.ToString().Substring(e.Url.ToString().IndexOf("&code="));
        Token = Token.Replace("&code=", String.Empty);
        this.Close();
    }
}

Ссылка на мою исходную статью и исходный код: ссылка

person John117    schedule 07.09.2013
comment
Обратите внимание, что ответы только по ссылкам не рекомендуются, ответы SO должны быть конечной точкой поиска. для решения (по сравнению с еще одной остановкой ссылок, которые со временем устаревают). Пожалуйста, рассмотрите возможность добавления здесь отдельного синопсиса, оставив ссылку в качестве ссылки. - person kleopatra; 07.09.2013

Первым шагом в процессе OAuth 2 является отправка пользователя на https://api.box.com/oauth2/authorize с параметрами response_type и client_id в качестве параметров запроса. URL-адрес перенаправления будет таким же, как вы установили в версии 1. Например, если ваш client_id был 123456, вы могли бы направить пользователя на

https://api.box.com/oauth2/authorize?response_type=code&client_id=123456

Дополнительную информацию см. здесь.

person seanrose    schedule 15.12.2012
comment
Извините, но я не понимаю всю документацию. В auth V1 я не использую URL-адрес перенаправления. Я просто получаю билет и звоню box.net/api/1.0/auth с проездной билет. - person user1466502; 20.12.2012
comment
Извините, но я не понимаю всю документацию. В auth V1 я не использую URL-адрес перенаправления. Я просто получаю билет и звоню box.net/api/1.0/auth с проездной билет. Я попытался поставить box.net/api/1.0/auth, так как OAuth нужен https URL, но если я позвоню api.box.com/oauth2/authorize?response_type=code&client_id={Мой идентификатор клиента}, я получаю сообщение об ошибке: invalid_client. Из того, что я вижу, client_id имеет то же значение, что и API_key V1, поэтому, поскольку он работает с аутентификацией V1, я застрял с OAuth. Если у кого-то есть конкретный пример входа в простую учетную запись box, очень признателен! - person user1466502; 20.12.2012
comment
@ user1466502, ваше приложение на рабочем столе или в Интернете? Попробуйте установить в качестве redirect_uri любой URL-адрес https (даже не существует). После ввода данных login/pwd и разрешения действия вы получаете ответ от box.com, который по умолчанию будет содержать редирект на box.com, но также иметь в теле ответа некоторый тег (если не ошибаюсь: iframe) с вашим URL и кодом стоимость - person Yura Shinkarev; 26.12.2012
comment
Почему разработчики вынуждены использовать такие грязные хаки, чтобы просто аутентифицироваться в API? Разве не должно быть более простого способа? - person afrish; 15.03.2013