初学者。当我尝试用我的授权来交换访问google的API的访问令牌时,我一直遇到重定向uri不匹配的错误,但是在检查我的google cloud控制台时,我的授权重定向uri是完全匹配的,包括http和尾随的斜杠。我授权的JavaScript源代码也完全匹配。用户授权过程正常进行并返回一个代码
下面是我的授权过程和令牌交换代码:
@app.route("/youtubeauth")
def youtubeauth():
yt_auth_dict={
"scope":"https://www.googleapis.com/auth/youtube",
"client_id":youtube_client_id,
"response_type":"code",
"redirect_uri":"http://localhost:8888/tokenexchange",
"prompt":"consent"
}
yt_auth_url="https://accounts.google.com/o/oauth2/auth?"+urllib.parse.urlencode(yt_auth_dict)
print(yt_auth_url)
return redirect (yt_auth_url)
@app.route("/tokenexchange")
def tokenexchange():
code = request.args.get('code')
if code:
#obtaining access token
print(code)
params = {
'code': code,
'client_id': youtube_client_id,
'client_secret': youtube_client_secret,
'redirect_uri': 'http://localhost:8888/example',
'grant_type': 'authorization_code'
}
tokenrequest=requests.post('https://oauth2.googleapis.com/token',data=params)
return tokenrequest.json()
2条答案
按热度按时间qfe3c7zg1#
重定向URI必须与您在Google Developer Console中配置的URI完全匹配。错误消息将告诉您应用程序从哪个重定向uri发送。
Google OAuth2: How the fix redirect_uri_mismatch error. Part 2 server sided web applications.
iyr7buue2#
将用于交换访问令牌的授权代码(/tokenexchange)的重定向URI更改为与提示用户进行授权(/youtubeauth)的URI相同