我们希望在kivy应用程序中使用parse来跟踪用户的分数。我们的应用程序需要编码的安全登录,因此当我们试图将用户的解析信息(例如,objectId、用户名等)链接到他们的分数时,我们会收到以下错误:parse_rest.core.ResourceRequestLoginRequired:save需要登录会话
这个消息是parse_rest user.py中的第26行抛出的。我们当前的代码试图馈送解析sessionToken,但由于某种原因它不起作用。请帮助我们找出如何让这个代码工作:
main.py(注意:我们的会话令牌在LoginScreen类中被识别并设置为等于"sessionToken"。我们知道这是有效的,因为我们可以在应用程序的任何类中执行方法时使用"print LoginScreen.sectionToken"来打印会话令牌)
def game_score(self):
userScore = User(score="")
import json,httplib
connection = httplib.HTTPSConnection('api.parse.com', 443)
connection.connect()
connection.request('PUT', '/1/users/objectId', userScore.save(),
{"X-Parse-Application-Id": "Parse_app_id",
"X-Parse-REST-API-Key": "Parse_rest_API_key",
"X-Parse-Session-Token": LoginScreen.sessionToken})
gameScore = GameScore(score='user_score_pulled_from_game_screen')
gameScore.save()
User.score = gameScore
import json,httplib
connection = httplib.HTTPSConnection('api.parse.com', 443)
connection.connect()
connection.request('PUT', '/1/users/objectId', userScore.save(),
{"X-Parse-Application-Id": "Parse_app_id",
"X-Parse-REST-API-Key": "Parse_rest_API_key",
"X-Parse-Session-Token": LoginScreen.sessionToken})
pass
作为一个fyi,我们使用的代码结构来自Parse文档的"更新用户"部分:https://parse.com/docs/rest
提前感谢
这可以使用ParsePy来完成,在User和GameScore之间创建一对一关系。登录功能将防止您收到ResourceRequestLoginRequired错误。此外,使用此方法,不需要会话令牌。
def update_game_score(self):
user = User.login(<username>, <password>)
gameScore = GameScore(score='user_score_pulled_from_game_screen')
gameScore.save()
user.gameScores = gameScore
user.save()
事实上,经过一些工作,我们找到了一个更强大的解决方案,它将用户表中的gameScore列直接与gameSore表联系起来:
def update_game_score(self):
user = User.login(username, password)
try:
user.gameScores
except AttributeError:
gameScore = GameScore(TotalScore=self.manager.get_screen('game_home_screen').score)
gameScore.save()
user.gameScores = gameScore
user.save()
else:
gameScore = user.gameScores
gameScore.TotalScore += self.manager.get_screen('game_home_screen').score
gameScore.save()
如何做到这一点的方法来自ParsePy文档的Users部分:https://github.com/dgrtwo/ParsePy