2016-10-17 3 views
1

현재 Alexa 스킬과 Uber 나머지 API를 통합하려고합니다.Uber API 무단 액세스 문제

Uber API를 사용하여 탑승 요청을 할 수 없습니다. 나는 위의 API를 호출 할 때 나는 점점 오전,

https://sandbox-api.uber.com/v1/requests 

: 나는 API의 샌드 박스 버전을 사용하고

"허가받지 않은 401"응답으로.

개발 용으로 Java 8을 사용하고 있습니다.

Uber 개발자 대시 보드의 액세스 토큰을 사용하고 있습니다. "설정"탭의 "개인 액세스 토큰으로 테스트"섹션에는 "새 액세스 토큰 생성"버튼이 있습니다. 이 단추를 클릭하면 액세스 토큰이 생성됩니다.

위에 생성 된 액세스 토큰을 인증 헤더에 설정합니다.

HttpPost httpPost = new HttpPost("https://sandbox-api.uber.com/v1/requests"); 
httpPost.setHeader("Authorization", "Bearer " + access_token); 

내가 동네 짱 개발자 대시 보드에서 "인증"탭에 아무것도 설정해야합니까 : 여기 코드는? 현재 나는 모든 변경을하지 않았으며 모든 것을 기본값으로 남겨 두었습니다.

액세스 토큰을 헤더에 설정하기 전에 인코딩해야합니까?

알려 주시기 바랍니다.

감사합니다.

답변

1

불행하게도, 당신이 (예 POST v1/requests에 필요한 requests 등) "제한된 액세스"범위에 대한 대시 보드 생성 된 토큰을 사용할 수 없습니다, 당신은 샌드 박스에서 함께 테스트하기 위해 액세스 토큰을 생성하기 위해 OAuth를 단계를 거쳐야합니다. 당신이 샌드 박스에서 POST v1/requests 엔드 포인트를 테스트하기 위해 대시 보드 토큰을 사용할 수 없기 때문에

으로 테스트 할 수있는 토큰을 생성하는 빠른 방법이 시도 : 브라우저에서이 URL에

  1. 이동 (교체 콜백 URL 사용하여 응용 프로그램 클라이언트 ID와 YOUR_CALLBACK_URL와 YOUR_CLIENT_ID은 - 대시 보드의 권한 탭의 콜백 URL을 설정 -) localhost가 될 수 :

    https://login.uber.com/oauth/v2/authorize?response_type=code&client_id= YOUR_CLIENT_ID&scope=request&redirect_uri=YOUR_CALLBACK_URL 
    
  2. 로그인을하여 동네 짱 개발까지와에 및 계정 당 당신의 액세스 토큰 (뿐만 아니라 필요한 모든 다른 값을 대체를 얻기 위해,

  3. 당신은 code 쿼리 문자열로 redirect_uri로 리디렉션됩니다 "허용"을 클릭 code의 값을 복사하고이 curl 명령에 붙여 넣습니다) :

    curl -F 'client_secret=YOUR_CLIENT_SECRET' \ 
        -F 'client_id=YOUR_CLIENT_ID' \ 
        -F 'grant_type=authorization_code' \ 
        -F 'redirect_uri=YOUR_REDIRECT_URI' \ 
        -F 'code=CODE_FROM_REDIRECT' \ 
        https://login.uber.com/oauth/v2/token 
    

이 성공적이라면, 당신은 응답에 access_token을 받아야합니다.the Authorization guide

에서

자세한 내용은 또한 헤더를 설정하기 전에 액세스 토큰을 인코딩 할 필요가 없습니다.

도움이 되었기를 바랍니다.

+0

1 단계에서 우리는 수동으로 URL을 복사하고 브라우저에 넣고 코드와 코드를 매 10 분마다 만료시켜야합니다. API 호출을 통해 코드를 얻는 방법은 무엇입니까? 미리 감사드립니다 –

+0

또는 복사 URL이 일회일까요? –

+0

OAuth 2.0 인증 부여 흐름의 특성상 앱을 처음으로 인증하도록 사용자에게 요청해야합니다 (1 단계). 그런 다음'access_token '(3 단계)에 대한'code'를 교환 할 때,이'access_token'을 어딘가에 저장하고 API에 대한 추가 요청을 위해 사용해야합니다. 액세스 토큰은 페이로드에 'refresh_token'을 포함하므로 30 일 후에 만료되면 액세스 토큰을 새로 고칠 수 있습니다. –

관련 문제