2014-05-13 2 views
0

Box API 2.0을 사용 중이며 상자와 응용 프로그램간에 문서를 동기화 할 수있는 서비스가 있습니다. 때로는 서비스가 새 액세스 토큰을 요청하는 동안 네트워크 오류 또는 누군가 응용 프로그램을 업데이트하거나 서버를 다시 시작하는 것과 같은 일이 발생합니다. 이 경우 내 로컬 DB의 내 액세스 토큰이 발행 된 토큰과 동일하지 않으며 재시작 오류로 인해 발행 된 새 토큰이 향후 로컬 DB에 저장되지 않습니다.내 데이터베이스에서 액세스 토큰을 새로 고치지 만 업데이트하지 않았습니다.

어떻게 이런 일이 발생하지 않도록 할 수 있습니까? 새로 고침 토큰은 각 요청마다 갱신되므로 새 액세스를 발급하고 토큰을 새로 고치는 데 사용할 수 없습니다.

+0

이렇게하면 문제가 해결되는 것 같지만이를 수행하는 방법이 명확하지 않습니다. https://stackoverflow.com/questions/14170857/oauth2-refresh-token-only-valid- 14 일 동안 – Osama

답변

0

새 액세스 토큰으로 전화를 걸지 않은 경우 이전 새로 고침 토큰을 다시 사용할 수 있습니다.

따라서 액세스 토큰 및 새로 고침 토큰 AT1/RT1이 있다고 가정 해 보겠습니다. 어떤 시점에서 당신은 토큰의 새로운 세트 얻기 위해 새로 고침 URL을 호출

curl https://www.box.com/api/oauth2/token \ -d 'grant_type=refresh_token&refresh_token={RT1}&client_id={your_client_id}&client_secret={your_client_secret}' \ -X POST 

를 그리고 네트워크가 어두워, 당신은 응답을하지 않았다. 상자는이 같은 토큰 AT2/RT2의 새로운 세트를 다시 전송 :

{ "access_token": "AT2", "expires_in": 3696, "restricted_to": [], "token_type": "bearer", "refresh_token": "RT2" } 

을하지만 당신은 그것을 가지고하지 않았다. 우우! (...하지만
당신은 다시 동일한 요청을 보낼 수있는 두려워하지 않으며, 상자의 서버가 정확히 동일한 응답을 당신을 다시 줄 것이다 결코

같은 AT2/RT2

를 그런 다음 사용하는 경우. AT2 (또는 RT2) 일 경우 RT1이 무효화됩니다.