更新分析用户信息以跟踪玩家在kivy应用程序中的得分



我们希望在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

相关内容

最新更新