如何以编程方式获取来自BOX的授权代码的访问令牌?

时间:2013-04-11 20:40:10

标签: box-api

阅读了box网站上的oauth文档后,我了解了获取access_token和refresh_token的步骤,这需要authorization_code。

第1步:向https://www.box.com/api/oauth2/authorize?response_type=code&client_id=CLIENT_ID&state=authenticated&redirect_uri=https://www.appfoo.com

发送获取请求

步骤2:在浏览器中输入框的凭据然后单击“允许”按钮,重定向到指定的redirect_uri,状态为= authenticated& code = AUTHORIZATION_CODE

步骤3:现在使用来自step2的重定向url中的AUTHORIZATION_CODE,可以通过在主体中使用AUTHORIZATION_CODE,client_id,client_secret向https://www.box.com/api/oauth2/token发送POST请求然后解析返回的json响应来以编程方式完成获取access_token。 / p>

我的问题是:是否可以通过编程方式执行step1和step2而不是通过浏览器?

非常感谢你!

5 个答案:

答案 0 :(得分:2)

当前的OAuth 2流程要求用户通过浏览器,无法以编程方式完成。

答案 1 :(得分:1)

有可能,只需使用cURL模仿每个表单,然后使用第二步发布Cookie。 第一次你需要3个请求,下次只需要一个(如果refresh_token没有过期,否则再次3个)

答案 2 :(得分:0)

关于模仿浏览器事务的观点是一个很好的点,但是你不想使用cURL,而是想要使用更高级别的工具,比如mechanize(可用于ruby,perl和python)。它将为您处理cookie,并可以编程方式遍历表单和链接。有利于页面抓取和编写脚本,以便从TicketMaster订购热门音乐会门票!

答案 3 :(得分:0)

如果你有授权码,那么你应该能够通过SDK获得OAuth令牌(access_token,refresh_token),对吗?

答案 4 :(得分: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);

现在我正试图找出如何在用户和群组上执行CRUD操作的RUD部分。