【发布时间】:2018-01-20 08:12:10
【问题描述】:
我一直试图让它工作一段时间,但我不知道该尝试什么。我制作了一个 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 上运行是否有问题?一个错误?如果有帮助,我在 Ubuntu 16.04 上使用 Chrome。
【问题讨论】:
-
我想改标题“如何同步两台服务器?”
-
开枪,我没想到,也许在两个不同的服务器上运行这个东西会产生问题?我这样做是因为我不知道如何在本地测试它,但在实际用例中它不会是这样的。无论如何不要改变问题,因为那不是我想做的,但这可能是我的问题的原因。