视图函数未返回有效响应。返回类型必须是字符串,dict
Posted
技术标签:
【中文标题】视图函数未返回有效响应。返回类型必须是字符串,dict【英文标题】:The view function did not return a valid response. The return type must be a string, dict 【发布时间】:2021-03-15 06:26:36 【问题描述】:使用 Spotify API 和 Flask 我正在尝试扩展 refresh_token 有效性。结果,当我向服务器发送请求时,我收到此错误:
*The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a Response.*
我的代码:
@app.route("/index")
def index():
if time.time() > session['expires_in']:
payload = session['refresh_token']
ref_payload =
'grant_type': 'refresh_token',
'refresh_token':session["refresh_token"]
header='Authorization': 'Basic ' + '<CLIENT_ID>:<CLIENT_SECRET'
r = requests.post(AUTH_URL, data=ref_payload, headers=header)
return r
@app.route("/q")
def api_callback():
session.clear()
code = request.args.get('code')
res = requests.post(AUTH_URL, data=
"grant_type":"authorization_code",
"code":code,
"redirect_uri":REDIRECT_URI,
"client_id":CLIENT_ID,
"client_secret":CLIENT_SECRET
)
res_body = res.json()
session["token"] = res_body.get("access_token")#token
session["expires_in"] = res_body.get("expires_in")#time
session["refresh_token"] = res_body.get("refresh_token")#reflesh token
return redirect("index")
https://accounts.spotify.com/api/token 被接受为 AUTH_URL
这个问题很可能很常见,但我现在想不出解决方案。提前致谢
【问题讨论】:
【参考方案1】:我解决了这个问题。在我的配置文件中,我创建了一个可验证的文件,其中我将我的 client_id 和 client_secret 编码为 base64 格式:
ID_SEC = CLIENT_ID +':'+ CLIENT_SECRET
base64_encode = base64.b64encode(ID_SEC.encode()).decode()
在标题之后我编辑授权:
header=
'Content-Type':'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Authorization': 'Basic '.format(base64_encode)
并发送帖子请求:
r = requests.post(AUTH_URL, data=ref_payload, headers=header)
【讨论】:
以上是关于视图函数未返回有效响应。返回类型必须是字符串,dict的主要内容,如果未能解决你的问题,请参考以下文章
我一直陷入 Flask 错误。 TypeError:视图函数没有返回有效响应[重复]
Flask04 后台获取请求数据视图函数返回类型前台接受响应数据
Flask 学习-7. make_response() 自定义响应内容