我一直试图让它工作一段时间,我不知道该尝试什么。我制作了一个Flask应用程序,我现在正在localhost上测试它。我在localhost:8000上为我的客户端运行服务器,在localhost:8080上为Flask应用程序运行另一个服务器,然后我使用flask-cors来启用跨域请求。一切似乎工作正常,应用程序完成其工作。但是,当它在session
中存储值时,它突然失败了。这是代码的关键部分:
def retrieve_tokens(self, session, code):
# Get tokens from ORCID given a request code
headers = {'Accept': 'application/json'}
payload = dict(self._details)
payload.update({
'grant_type': 'authorization_code',
'code': code,
})
try:
r = post(self._url + 'oauth/token',
data=payload, headers=headers)
except ConnectionError:
return None
# Save them (if no error has occurred)
rjson = r.json()
if 'error' not in rjson:
print rjson
session['login_details'] = rjson
print session['login_details']
return r.json()
def get_tokens(self, session, code=None):
# Retrieve existing tokens, or ask for new ones
if 'login_details' in session and code is None:
print session['login_details']
return session['login_details']
elif code is not None:
# Retrieve them
return self.retrieve_tokens(session, code)
else:
# Something went wrong
return None
如您所见,那里有一些print
调试调用。调用retrieve_tokens
时一切都很顺利;最重要的是,第二个print
给出与第一个相同的结果(即具有所有请求的标记的JSON对象)。但是get_tokens
顽固地返回None
。我有什么可能做错的任何线索?我排除了一些事情:
app_secret
已设置好,应该没问题。我使用一个静态的,从JSON文件加载(这样我就可以把它放到我的存储库的.gitignore
中)SERVER_NAME
无效session
并将其传递给这些函数(在另一个文件中)而不是直接在外部文件中导入它不会改变任何内容session.modified = True
不会改变任何内容我可以尝试什么?似乎没什么用。在localhost上运行是一个问题吗?一个bug?我在Ubuntu 16.04上使用Chrome,如果有帮助的话。
答案 0 :(得分:0)
问题是您要在if语句中分配一个值。因此,如果未给出if语句的条件,则不会分配将在以后使用的值,并且代码将因此失败。尝试通过if-else语句更改if-statement,以确保会话的该字段具有值。