使用R连接到Strava
整天都在搞这个。我只是想从Strava中提取数据,在R中进行操作,但我想不出来。我不是程序员,但我曾经连接到github文件,但事情并没有按照我的方式发展 这是一个基本的错误,还是我遗漏了一些我还不明白的更深层次的原则 这是我尝试运行代码时得到的结果:使用R连接到Strava,r,api,R,Api,整天都在搞这个。我只是想从Strava中提取数据,在R中进行操作,但我想不出来。我不是程序员,但我曾经连接到github文件,但事情并没有按照我的方式发展 这是一个基本的错误,还是我遗漏了一些我还不明白的更深层次的原则 这是我尝试运行代码时得到的结果: x <- pullStravaData(); > x <Token> <oauth_endpoint> request: https://www.strav
x <- pullStravaData();
> x
<Token>
<oauth_endpoint>
request: https://www.strava.com/oauth/authorize
authorize: http://localhost:1410
access: https://www.strava.com/oauth/token
client_id: 3979
response_type: code
<oauth_app> strava
key: XX # I hid this, not sure if it matters
secret: <hidden>
<credentials> message, errors
x
请求:https://www.strava.com/oauth/authorize
授权:http://localhost:1410
访问:https://www.strava.com/oauth/token
客户编号:3979
响应类型:代码
斯特拉瓦
钥匙:XX#我把这个藏起来了,不知道它是否重要
秘密:
消息、错误
这是我的代码:
pullStravaData <- function() {
# because I think this is important
library(httr);
# not sure if this is relevant
responseType = "code";
clientId = 3979;
# create app
clientSecret = trust_that_i_entered_this;
accessToken = and_this_wrapped_in_quotes;
myapp <- oauth_app("strava", accessToken, clientSecret);
# get oauth credentials
request <- "https://www.strava.com/oauth/authorize";
authorize <- "http://localhost:1410";
access <- "https://www.strava.com/oauth/token";
strava_token <- oauth2.0_token(
oauth_endpoint(request, authorize, access),
myapp);
data <- stravaPost(strava_token, clientId, clientSecret);
}
stravaPost <- function(token, clientId, clientSecret) {
# I saw this happen somewhere else, but I'm pretty sure my script doesn't even get here
stoken = config(token=token);
req <- GET(sprintf("https://www.strava.com/api/v3/activities/%s",
clientId), stoken, client_id = clientId, client_secret = clientSecret, code = token);
stop_for_status(req); # not sure what this does
content(req); # not sure what this does
}
pullStravaData顺序:
httr是R http请求库,因此,通过库(httr)包含它是很重要的,是的
stop_for_status如果请求的HTTP状态令人担忧,则会停止后续代码行的运行—例如,404(未找到任何内容)或403(未授权)
content从HTTP响应中提取实际内容,并提供该内容,而不是返回整个响应
在PullStravata函数中没有使用任何类型的显式或隐式return()。结果是它实际上并没有返回“数据”。尝试转向:
data <- stravaPost(strava_token, clientId, clientSecret);
看看会发生什么。顺便说一句,在这里分号是不必要的
我强烈建议,如果你要用R手动发出这些请求,你应该了解语言是如何运行的,它的规则是什么。听说不错。我不知道你不需要半决赛。我对该语言有很好的理解,只是不了解api或http相关函数。在添加“return(data)”之后,我仍然得到完全相同的响应,我认为显式返回变量不是问题所在。我认为存在授权问题,但我不确定原因(错误401)。此外,datacamp似乎没有涵盖任何如此复杂的内容,strava文档中也没有使用R.Fair。缺少我自己的API密钥,我唯一能建议的是,您深入了解httr的一些细节,而不是大量复制代码,然后看看它的OAuth设置是如何工作的-这些都很好。谢谢,我感谢您的帮助
data <- stravaPost(strava_token, clientId, clientSecret);
return(data)
stravaPost(strava_token, clientId, clientSecret);