2012-07-20 1 views
3

Jeff Gentry의 R 및 ROAuth 패키지를 사용하여 fitbit에서 데이터를 가져오고 인증이 작동하지 않는 것 같습니다.ROAuth R 및 FitBit API 오류 : 승인 헤더가 제공되지 않음

apiURL = 'api.fitbit.com/' 

credentials = OAuthFactory$new(consumerKey=key, 
          consumerSecret=secret, 
          requestURL=tokenURL, 
          accessURL=accessTokenURL, 
          authURL=authorizeURL 
          ) 

을 한 후 나는 악수를 실행합니다 : 코드는 다음과 같이 자격 증명 집합을 찾고 적절한 결과

> credentials$handshake() 
To enable the connection, please direct your web browser to: 
http://www.fitbit.com/oauth/authorize?oauth_token=036afa88a832bfffc72af485e38c1572 
When complete, record the PIN given to you and provide it here: 

완전한 권한을하고 oauth_verifier 토큰에 붙여 넣습니다.

마지막으로 나는 난 후 프로파일 데이터를 얻을려고 :

rawToChar(credentials$OAuthRequest(paste(apiURL,"1/user/userID/profile.json", sep="", collapse=''), "GET")) 

을 그리고 응답이 얻을 : 당신이하지 않았다면

[1] "{\"errors\":[{\"errorType\":\"oauth\",\"fieldName\":\"n/a\",\"message\":\"No 
Authorization header provided in the request. Each call to Fitbit API should be OAuth 
signed\"}]}" 

답변

1

DTL과 Geoff Jentry로 파기 및 이메일을 보내고 마침내 문제를 해결했습니다. (너무 많은 사람들에게 감사드립니다.)

Fitbit.com API를했다
params <- c(params, as.list(auth)) 
getForm(url, .params = params, curl = curl, .opts = c(list(httpget = TRUE), opts, list(...)))) 

좀 더 특정 https://wiki.fitbit.com/display/API/OAuth+Authentication+in+the+Fitbit+API 필요 다음 oauthGet 기능도 컬 통화 권한 부여 .OPT를 사용하지 않고 원래 ROAuth 패키지에서

이처럼 보였다 PARAMS했다 "는 oauth_params의 값을 감싸고 나는 다음과 같은 개조했다합니다 :.

params <-as.list(auth) #dropping the first item in the list which was an extra "GET" 
opts=list(httpheader=c(Authorization=paste("OAuth ", paste(names(auth), '="', auth, '"', sep = "", collapse = ",\n "), sep="", collapse=''))) 
getForm(url, curl = curl, .opts = c(opts)) 

PARAMS을 지정하고 옵션을 나열하는 것이 문제를 일으키는 것으로 보인다을

마지막으로 올바른 데이터가있는 양식을 얻었습니다!

0

, 당신이 있는지 확인 CRAN에서 사용할 수 없습니다 최신 버전 (0.9.2) :

http://geoffjentry.hexdump.org/ROAuth_0.9.2.tar.gz

Windows를 사용하는 경우에 당신은 사용해야합니다이 하나

http://geoffjentry.hexdump.org/ROAuth_0.9.2.zip

패키지의 미래 발전에 노력 다른 사람들이있다, 나는 그들이 이미 새로운 버전을 거라고 생각했다 그러나 분명히 아닙니다, 나는 아마도 0.9.2를 CRAN에 제출해야합니다.

그래도 작동하지 않으면 Fitbit 고유의 것일 수 있습니다. 나는 소수의 사이트가 ROAuth를 잘 수행하지 못하는 것을 보았다. 0.9.2가 여전히 실패하는 경우 알려 주시면 자세히 살펴 보겠습니다.

+0

여전히 승인 헤더를 올바르게 전송할 수 없습니다 (문제라고 생각합니다). oauthGET 함수의 어딘가에 몇 가지 추가 .opts를 설정해야하지만 어느 것이 있는지 파악할 수는 없습니다. RCurl의 저자 인 Duncan Lang에게 그가 알고 있는지 알아보기 위해 글쓰기. –

+0

DTL은 실제로 ROAuth를 인수하는 사람 중 하나이므로 다른 버전으로 0.99.2 버전 (현재의 devel 버전)에 대해 물어볼 수 있습니다. – geoffjentry

+0

약간의 진전을 이루었습니다. fitbit의 경우 Oauth 매개 변수를 값으로 전달하기 전에 따옴표로 묶어야합니다. RCurl에 대해 verbose = T 옵션을 켜고 더 유용한 정보를 얻습니다. –

관련 문제