2014-02-20 1 views
0

저는 Box에서 엔터프라이즈 계정을 관리하고 있으며, 엔터프라이즈의 내부 카탈로그를 기반으로 사용자의 전자 메일 주소를 업데이트하고 할당량을 설정하는 자동화 된 통합 작업을하고 있습니다.Box API 사용의 초기 단계를 자동화 할 수 있습니까?

Box API 문서는 다른 사용 시나리오를 타겟으로하고 있지만 access_token/refresh_token 쌍을 얻으면 그 refresh_token은 60 일 동안 유효하며 그 기간 중 언제든지 새 값을 얻을 수 있습니다 .

"항상 뭔가 잘못되었습니다."라는 질문에 따라 브라우저와 수동 상호 작용이 필요없는 access_token/refresh_token 쌍을 얻는 초기 단계를 자동화하는 방법이 있는지 궁금합니다. refresh_token이 손실되었거나 Box 또는 유사 업데이트로 인해 유효하지 않게 된 경우 여기에 아무도 수동으로 초기 토큰 쌍을 얻는 방법을 기억하지 못할 것입니다.

자동으로 수행 할 방법이 없다면 나는 그걸로 만 살 것이지만, 내가 뭔가를 놓친 것이 아니라는 것을 명시 적으로 물어 보지 않고 포기하고 싶지는 않습니다. :-)

답변

0

아니,에는 AuthZ 브라우저 및 수동 상호 작용을 필요로하지 않는 access_token은/refresh_token도 쌍을 얻기의 초기 단계를 자동화의 방법이 없습니다 [거기]/authN 단축키. 기업 전체를 관리 할 수있는 계정의 경우 권한과 권한으로 인해 두 배가됩니다.

나는 두려워서 ... 여기 어떻게 초기 토큰 쌍을 수동으로 얻었는지 기억하지 못할 것입니다.

  1. 는 '기업 관리'범위와 상자의 응용 프로그램을 만들기 :이 문제를 해결하려면

방법 중 하나는 다음과 같이 구현 될 수 있습니다.

  • 도메인에 단순히 OAuth2 workflow을 구현하는 웹 앱을 만듭니다.
  • 결과로 나타나는 액세스/새로 고침 토큰 쌍을 사용자가 선택한 지속성 계층에 저장하십시오.
  • authZ/authN 문제로 인해 문제가 발생하면 누군가가 웹 앱으로 이동해야한다는 그룹 전자 메일 계정에 스크립트를 보내십시오. 새 토큰을 요청하십시오.
  • 시작하는 데 도움이되는 샘플 웹 응용 프로그램이 있습니다. (Python, Asp.NET MVC)

    이 ... 박스 API 문서가 다른 사용 시나리오를 대상으로 보인다 ... 기업 별 물건의

    많은이의 UsersEvents 부분에서 발견된다 API 및 As-User 기능은 전체 API를 엔터프라이즈 급으로 만듭니다. 그것은 꽤 산뜻합니다.

    +0

    감사합니다, 존 같은 것을 사용할 수 있습니다 REDIRECT_URL로

    import java.io.IOException; import java.net.URL; import java.util.concurrent.ExecutionException; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.ElementNotFoundException; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlButton; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput; import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; import com.gargoylesoftware.htmlunit.html.HtmlTextInput; public class BoxAuth { private String key; private String email; private String password; private String redirectUrl; private final String AUTH_URL; public BoxAuth(String key, String email, String password, String redirectUrl) { super(); this.key = key; this.email = email; this.password = password; this.redirectUrl = redirectUrl; this.AUTH_URL = "https://www.box.com/api/oauth2/authorize?response_type=code&client_id=" + key + "&redirect_uri=" + this.redirectUrl; } public String authorize() throws IOException, InterruptedException, ExecutionException { System.out.println("AUTHORIZING: " + AUTH_URL); final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17); HtmlPage loginPage = webClient.getPage(AUTH_URL); final HtmlPage grantAccessePage = this.authorizeLogin(loginPage); return this.authorizeGrantAccess(grantAccessePage); } private HtmlPage authorizeLogin(HtmlPage page) throws IOException { final HtmlForm loginForm = page.getFormByName("login_form"); loginForm.getInputByName("password"); final HtmlTextInput emailField = (HtmlTextInput) loginForm.getInputByName("login"); emailField.setValueAttribute(this.email); final HtmlPasswordInput passwordField = (HtmlPasswordInput) loginForm.getInputByName("password"); passwordField.setValueAttribute(this.password); final HtmlSubmitInput loginButton = loginForm.getInputByName("login_submit"); final HtmlPage result = loginButton.click(); try { final HtmlForm test = result.getFormByName("login_form"); throw new Exception("BoxAPI: Wrong login data!!!"); } catch (ElementNotFoundException e) { } return result; } private String authorizeGrantAccess(HtmlPage grantAccessePage) throws IOException, InterruptedException, ExecutionException { final HtmlForm grantAccessForm = grantAccessePage.getHtmlElementById("consent_form"); final HtmlButton grantAccess = grantAccessForm.getButtonByName("consent_accept"); final HtmlPage codePage = grantAccess.click(); URL url = codePage.getUrl(); String result = ""; if (url.toString().contains("&code=")) { result = url.toString().substring(url.toString().indexOf("&code=")); result = result.replace("&code=", ""); } return result; } } 

    ! 초기 단계를 자동화하는 웹 응용 프로그램을 갖는 것이 내 걱정을 진정시킬 수있는 "충분히 좋은"방법입니다. 분명한 답변을 해주셔서 감사합니다. –

    관련 문제