首页 文章

获取请求strava v3 api python的活动

提问于
浏览
2

编辑 - 因为我无法't tag this with Strava here are the docs if you'感兴趣 - http://strava.github.io/api/

我完成了身份验证,并在response.read中获取了access_token(以及我的运动员信息) .

我在下一步遇到问题:我想返回有关特定活动的信息 .

import urllib2
    import urllib

    access_token = str(tp[3]) #this comes from the response not shown
    print access_token

    ath_url = 'https://www.strava.com/api/v3/activities/108838256'

    ath_val = values={'access_token':access_token}

    ath_data = urllib.urlencode (ath_val)

    ath_req = urllib2.Request(ath_url, ath_data)

    ath_response = urllib2.urlopen(ath_req)

    the_page = ath_response.read()

    print the_page

错误是

Traceback (most recent call last):
      File "C:\Users\JordanR\Python2.6\documents\strava\auth.py", line 30, in <module>
        ath_response = urllib2.urlopen(ath_req)
      File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 124, in urlopen
        return _opener.open(url, data, timeout)
      File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 389, in open
        response = meth(req, response)
      File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 502, in http_response
        'http', request, response, code, msg, hdrs)
      File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 427, in error
        return self._call_chain(*args)
      File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 361, in _call_chain
        result = func(*args)
      File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 510, in http_error_default
        raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    HTTPError: HTTP Error 404: Not Found

404是一个谜题我知道这个活动存在吗?

是'access_token'正确的 Headers 信息?文档(http://strava.github.io/api/v3/activities/#get-details)使用授权:承载?我不确定liburl会如何编码信息的Bearer部分?

对不起,如果我的一些术语有点偏,我就是新手 .

这个坏男孩回答说 .

import requests as r
access_token = tp[3]

ath_url = 'https://www.strava.com/api/v3/activities/108838256'
header = {'Authorization': 'Bearer 4b1d12006c51b685fd1a260490_example_jklfds'}

data = r.get(ath_url, headers=header).json()

它需要在Dict中添加“Bearer”部分 .

感谢帮助idClark

1 回答

  • 6

    我更喜欢使用第三方Requests模块 . 您确实需要遵循文档并使用the API中记录的授权:标头

    请求has an arg for header data . 然后我们可以创建一个dict,其中键是 Authorization ,其值是单个字符串 Bearer access_token

    #install requests from pip if you want
    import requests as r
    url = 'https://www.strava.com/api/v3/activities/108838256'
    header = {'Authorization': 'Bearer access_token'}
    r.get(url, headers=header).json()
    

    如果你真的想使用urllib2

    #using urllib2
    import urllib2
    req = urllib.Request(url)
    req.add_header('Authorization', 'Bearer access_token')
    resp = urllib2.urlopen(req)
    content = resp.read()
    

    请记住 access_token 需要是文字字符串值,例如acc09cds09c097d9c097v9

相关问题