2013-04-11 57 views
1

在閱讀盒子網站上的oauth文檔後,我瞭解了獲取access_token和refresh_token的步驟,這需要授權代碼。如何以編程方式從BOX授權access_token?

第一步:發送GET請求來https://www.box.com/api/oauth2/authorize?response_type=code&client_id=CLIENT_ID&state=authenticated&redirect_uri=https://www.appfoo.com

第二步:在瀏覽器中輸入框的憑證後,然後點擊「允許」按鈕,重定向到與國家指定的REDIRECT_URI =認證&碼= AUTHORIZATION_CODE

步驟3:現在使用來自步驟2的重定向URL中的AUTHORIZATION_CODE,通過發送POST請求到https://www.box.com/api/oauth2/token,使用AUTHORIZATION_CODE,client_id,client_secret在主體中,然後解析返回的json響應,獲取access_token可以通過編程方式完成。

我的問題是:是否有可能以編程方式執行step1和step2而不是通過瀏覽器?

非常感謝你!

回答

2

當前的OAuth 2流程需要用戶通過瀏覽器並且不能通過編程方式完成。

+0

感謝您的信息 – user2259674 2013-04-11 21:35:10

1

這是可能的,只是用cURL模仿每個表單,並在第二步發佈cookie。 第一次你需要3個請求,下次只有一個(如果refresh_token沒有過期,否則3次)

0

關於模仿瀏覽器事務的一點很好,但不是使用cURL你想使用一個更高層次的工具,比如機械化(可用於ruby,perl和python)。它將爲您處理cookies,並可以通過編程方式遍歷表單和鏈接。適合頁面抓取和寫腳本,以便從TicketMaster訂購熱門演唱會門票!

+0

只要記住,您將在腳本可以訪問的某個位置嵌入您的實際用戶名和密碼 - 這種類型的失敗將導致您無需分發這些憑據的OATH2的目的。不過,我也有類似的情況,我想要一個腳本訪問內容,所以我看到了這一點... – Chris 2013-08-09 23:50:29

0

如果您有授權碼,那麼您應該可以通過SDK獲取OAuth令牌(access_token,refresh_token),對嗎?

+1

恭喜你的第一個答案!如果你想給出一個很好的答案,你可以提供如何做到這一點的信息。 – aIKid 2013-10-25 02:01:38

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部分。

相關問題