2012-08-31 11 views
5

का उपयोग कर फिटबिट को ओथ प्रमाणीकरण httr library का उपयोग कर फिट बिट एपीआई से कनेक्ट करने का प्रयास कर रहा हूं।प्रस्तुति

दिए गए उदाहरणों का उपयोग करना, मैं निम्नलिखित कोड के साथ आया था:

library(httr) 

key <- '<edited>' 
secret <- '<edited>' 
tokenURL <- 'http://api.fitbit.com/oauth/request_token' 
accessTokenURL <- 'http://api.fitbit.com/oauth/access_token' 
authorizeURL <- 'https://www.fitbit.com/oauth/authorize' 

fbr <- oauth_app('fitbitR',key,secret) 
fitbit <- oauth_endpoint(tokenURL,authorizeURL,accessTokenURL) 

token <- oauth1.0_token(fitbit,fbr) 
sig <- sign_oauth1.0(fbr, 
    token=token$oauth_token, 
    token_secret=token$oauth_token_secret 
) 

मैं प्रमाणीकरण पूरा मिलता है। httr से संदेश है, लेकिन फिर API एक्सेस करने की कोशिश कर एक त्रुटि संदेश

GET("http://api.fitbit.com/1/user/-/activities/date/2012-08-29.json", sig) 
Response [http://api.fitbit.com/1/user/-/activities/date/2012-08-29.json] 
    Status: 401 
    Content-type: application/x-www-form-urlencoded;charset=UTF-8 
{"errors":[{"errorType":"oauth","fieldName":"oauth_access_token","message":"Invalid signature or token '<edited>' or token '<edited>'"}]} 

क्या समस्या हो सकती है के बारे में कोई सुराग नहीं फेंकता है?

उत्तर

4

समस्या प्रेजेंटर लाइब्रेरी से आती है, जो पैरामीटर के एन्कोडिंग के लिए कर्लस्केप का उपयोग करती है जबकि ओएथ 1.0 विनिर्देशों को प्रतिशत एन्कोडिंग की आवश्यकता होती है (this page देखें)।

curlPercentEncode के साथ curlEscape पर कॉल को प्रतिस्थापित करने से समस्या हल हो जाती है!

उनकी मदद के लिए @ मार्क-एस के लिए बहुत धन्यवाद।

+1

से नीचे मेरा उत्तर देखें, क्या आप उदाहरण का कोड देकर जवाब का विस्तार कर सकते हैं कि "curlPercentEncode के साथ curlEscape पर कॉल को प्रतिस्थापित कैसे करें "? –

+0

क्या आप यह समझाने की परवाह करेंगे कि इसका क्या अर्थ है? (हालांकि मुझे यकीन नहीं है कि यह अभी भी प्रासंगिक है क्योंकि 'प्रसाद' के कार्यान्वयन के बाद से बदल गया है)। –

2

एकमात्र चीज जो मुझे पता है कि हस्ताक्षर प्राप्त करने के लिए आपका कॉल प्रेजेंटर उदाहरणों से थोड़ा अलग है। httr उदाहरण हैं:

sig <- sign_oauth1.0(myapp, token$oauth_token, token$oauth_token_secret) 

जबकि अपने कोड है:

sig <- sign_oauth1.0(fbr, 
    token=token$oauth_token, 
    token_secret=token$oauth_token_secret 
) 

आप की जरूरत है "टोकन =" और "token_secret =" अपने कोड में?

+0

बस इसके लिए प्रयास किया, लेकिन इससे कोई फर्क नहीं पड़ता: वैसे भी, नामित तर्कों का उपयोग करने से कोई फर्क नहीं पड़ता? लेकिन आपके सुझाव के लिए धन्यवाद! –

+0

क्या आप हेडर के साथ वर्बोज़ अनुरोध पोस्ट कर सकते हैं? –

+0

यहां http शीर्षलेख है: OAuth oauth% 5Fconsumer% 5Fkey = \ " \", oauth% 5Fnonce = \ "ImkQ6g3HO0 \", oauth% 5Fignignature = \ " \", oauth% 5Fignignature% 5Fmethod = \ "HMAC% 2DSHA1 \ ", oauth% 5Ftimestamp = \" 1346655744 \ ", oauth% 5Ftoken = \" \ ", oauth% 5Fversion = \" 1% 2E0 \ "यह मदद करता है? –

संबंधित मुद्दे