我正在尝试使用带有webapp2的python和google app引擎向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)
但似乎我无法在Google应用引擎中使用请求模块。有一种简单的方法可以做到这一点吗?
答案 0 :(得分:4)
您需要在Appengine上使用Google的网址抓取库。试试这个:
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)
答案 1 :(得分:0)
继续Linuxious的回答。您需要使用urlencode
中的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)