更新解析用户信息以跟踪kivy app中的玩家得分

时间:2014-09-27 21:44:05

标签: python python-2.7 parse-platform kivy

我们希望使用解析来跟踪用户在我们的kivy应用中的得分。我们的应用程序需要编码安全登录,因此当我们尝试将用户的解析信息(例如,objectId,用户名等)链接到他们的分数时,我们会收到以下错误:parse_rest.core.ResourceRequestLoginRequired:save需要登录会话

此消息由parse_rest user.py中的第26行抛出。我们当前的代码尝试提供解析sessionToken,但由于某种原因它不起作用。请帮助我们弄清楚如何让这段代码起作用:

main.py(注意:我们的会话令牌在我们的LoginScreen类中被识别并设置为'sessionToken'。我们知道这是有效的,因为我们可以使用'print LoginScreen.sessionToken'在执行方法时打印会话令牌任何应用程序的类)

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

提前致谢

2 个答案:

答案 0 :(得分:1)

这可以使用ParsePy来完成,在User和GameScore之间创建One-to-One关系。登录功能将阻止您收到的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()

答案 1 :(得分:0)

实际上,经过一些工作后,我们找到了一个更强大的解决方案,将User表中的gameScores列直接绑定到gameScore表:

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文档的“用户”部分:https://github.com/dgrtwo/ParsePy