有一个python应用程序使用Health Graph API
# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response, redirect
from main.settings import CLIENT_ID, CLIENT_SECRET, RUNKEEPER_LOGIN_URL, ACCESS_TOKEN_URL
import requests
def index(request):
return render_to_response('index.html')
def login(request):
code = request.GET['code']
post_data = {'grant_type': 'authorization_code',
'code': code,
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
'redirect_uri': 'http://127.0.0.1:8000/welcome/'}
req = requests.post(ACCESS_TOKEN_URL, data=post_data)
我的登录按钮,将用户重定向到健康图登录页面,让我的应用等待授权码。
<a href="https://runkeeper.com/apps/authorize?redirect_uri=http%3A%2F%2F127.0.0.1%3A8000%2Flogin&response_type=code&client_id=xxxxxxxxx">
当我尝试通过调用登录功能获取访问令牌时,我获得了无效授权&#39;作为请求的错误。我试图替换'authorization_code&#39;换句话说,我得到了另一个不受支持的拨款类型&#39;错误。换句话说,令牌服务器拒绝我从auth服务器获取的代码。我做错了什么?
答案 0 :(得分:4)
重定向到授权端点的redirect_uri
与您在令牌端点交换login
的{{1}}函数中使用的code
不同。正如http://developer.runkeeper.com/healthgraph/getting-started(&#34;将您的应用程序连接到用户的健康图表帐户&#34;,子弹3)规定的文档一样,它应该完全匹配:
redirect_uri:您向用户发送时提供的确切网址
上面的授权端点