2013-04-11 2 views
1

после прочтения документации oauth на веб-сайте коробки, я понимаю шаги, чтобы получить access_token и refresh_token, для чего требуется authorization_code.Как программно получить access_token с authorization_code из BOX?

step1: отправить Получить запрос на https://www.box.com/api/oauth2/authorize?response_type=code&client_id=CLIENT_ID&state=authenticated&redirect_uri=https://www.appfoo.com

step2: после ввода учетных данных поля в браузере, а затем нажмите кнопку «Разрешить», перенаправлять на указанном redirect_uri с состоянием = аутентифицирован & кода = AUTHORIZATION_CODE

step3: теперь с AUTHORIZATION_CODE в URL-адресе перенаправления с шага2, получив access_token, можно сделать программным путем, отправив запрос POST в https://www.box.com/api/oauth2/token с AUTHORIZATION_CODE, client_id, client_secret в теле и затем проанализируя возвращенный ответ json.

Мой вопрос: возможно ли программно сделать шаги1 и step2 вместо браузера?

большое спасибо!

ответ

2

Текущий поток OAuth 2 требует, чтобы пользователь проходил через браузер и не может быть выполнен программно.

+0

Благодарим за информацию – user2259674

1

Возможно, просто подражайте каждой форме с помощью cURL и на втором этапе после печенья. В первый раз вам понадобятся 3 запроса, в следующий раз только один (если refresh_token не истек, иначе 3 снова)

0

Точка зрения на имитацию транзакций браузера является хорошей, но вместо использования cURL вы хотели бы использовать инструмент более высокого уровня, такой как mechanize (доступен для ruby, perl и python). Он будет обрабатывать файлы cookie для вас и может программно перемещать формы и ссылки. Хорошо для стирания страницы и написания скриптов для заказа горячих билетов на концерт от TicketMaster!

+0

Просто помните, что вы собираетесь вставлять свое фактическое имя пользователя и пароль где-нибудь, к которому может обращаться сценарий, - который портит цель OATH2, где вам не нужно распространять эти учетные данные. Тем не менее, у меня есть аналогичная ситуация, когда я хочу получить доступ к скрипту, поэтому вижу точку ... – Chris

0

Если у вас есть код авторизации, вы должны иметь возможность получить токен OAuth (access_token, refresh_token) через SDK, правильно?

+1

Поздравляю с первым ответом на SO! Если вы хотите дать хороший ответ, вы можете предоставить информацию о том, как это сделать. – aIKid

0

В ответ на aIKid, это то, что я первым сделать, чтобы получить BoxClient

BoxClient client = new BoxClient(clientId, clientSecret); 

    Map<String,Object> authToken = new HashMap<String,Object>(); 
    authToken.put("exprires_in","3600"); 
    authToken.put("token_type","bearer"); 
    authToken.put("refresh_token", clientRefreshToken); 
    authToken.put("access_token",clientAccessToken); 

    BoxOAuthToken oauthToken = new BoxOAuthToken(authToken); 

    client.authenticate(oauthToken); 

    return client; 

Тогда, у меня есть это, чтобы создать нового пользователя,

BoxUser createdUser = new BoxUser(); 

BoxUserRequestObject createUserRequest = BoxUserRequestObject.createEnterpriseUserRequestObject("someEmail.domain.com", "test user"); 
     createdUser = client.getUsersManager().createEnterpriseUser(createUserRequest); 

Теперь я пытаюсь выяснить, как сделать часть RUD моих операций CRUD для пользователей и групп.

Смежные вопросы