3

我正在尝试使用 python 和带有 webapp2 的谷歌应用引擎向 Health Graph API 发出 POST 请求。我看过一个例子,它是按如下方式完成的:

payload = {'grant_type': 'authorization_code',
    'code': code,
    'client_id': 'xxxxxxxxxxxxxxxxxxxxxxx',
    'client_secret': 'xxxxxxxxxxxxxxxxxxxxxx',
    'redirect_uri': redirect_uri,}
req = requests.post(API_ACCESS_TOKEN_URL, data=payload)

但似乎我无法在谷歌应用引擎中使用请求模块。有没有一种简单的方法可以做到这一点?

4

2 回答 2

4

您需要在 Appengine 上使用 Google 的 URL Fetch 库。试试这个:

payload = {'grant_type': 'authorization_code',
    'code': code,
    'client_id': 'xxxxxxxxxxxxxxxxxxxxxxx',
    'client_secret': 'xxxxxxxxxxxxxxxxxxxxxx',
    'redirect_uri': redirect_uri}
result = urlfetch.fetch(url=API_ACCESS_TOKEN_URL, payload = payload, method=urlfetch.POST)
于 2013-09-30T21:34:40.833 回答
0

继续 Linuxious 答案。您需要使用urlencodefrom对数据进行编码urllib。否则你会得到一个错误,抱怨有效载荷需要是一个字符串。因此:

import urllib
from google.appengine.api import urlfetch

payload = {'grant_type': 'authorization_code',
'code': code,
'client_id': 'xxxxxxxxxxxxxxxxxxxxxxx',
'client_secret': 'xxxxxxxxxxxxxxxxxxxxxx',
'redirect_uri': redirect_uri}

 payload= urllib.urlencode(payload)

 result = urlfetch.fetch(url=API_ACCESS_TOKEN_URL, payload = payload, method=urlfetch.POST)
于 2017-07-23T04:30:33.267 回答