1

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

step1:发送Get请求到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,state=authenticated&code=AUTHORIZATION_CODE

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

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

非常感谢!

4

5 回答 5

2

当前的 OAuth 2 流程要求用户通过浏览器并且不能以编程方式完成。

于 2013-04-11T21:05:12.297 回答
1

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

于 2013-04-18T19:07:40.627 回答
0

如果您有授权码,那么您应该能够通过 SDK 获取 OAuth Token(access_token, refresh_token),对吗?

于 2013-10-25T01:42:29.777 回答
0

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

于 2013-08-09T23:44:11.873 回答
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 部分。

于 2013-10-26T23:59:48.993 回答