解析REST API:使用ACL查询类对象的正确方法(python)

0 投票
1 回答
1584 浏览
提问于 2025-04-18 16:07

我在Parse数据库里有三个类。出于某种原因,从第二个类ContactsData获取数据时总是返回空结果。如果有人能提供一些关于这个问题的见解,那就太好了!

1. 默认的“用户”类

从这个类获取数据没有问题,按照https://parse.com/docs/rest#users上的例子来做就行。

ACL列是空的。

2. 自定义的“ContactsData”类。用户可以通过我们的iOS应用添加联系人的姓名和电话。

自定义列:姓名(字符串),电话(数字)。

ACL设置为写入:真,读取:真。

我想做的是:使用python的REST API获取某个用户的所有联系人。

方法1:

import json,httplib
import apikeys
import dataset

MY_CLASS = '/1/classes/ContactsData'
connection = httplib.HTTPSConnection('api.parse.com', 443)
connection.connect()
connection.request('GET', MY_CLASS, '', {
       "X-Parse-Application-Id": apikeys.PARSE_APP_ID,
       "X-Parse-REST-API-Key": apikeys.PARSE_REST_API_KEY,})

parseData = json.loads(connection.getresponse().read())
print parseData

输出:

{'results':[]} 

即使这个类里有对象,我也一直得到这个结果。

方法2

我还尝试了MY_CLASS = '/1/classes/ContactsData/ABCDEFG',其中ABCDEFG是某个对象的objectId。

输出:

{'code': 101, 'error': 'requested resource was not found'}

3. 自定义的“Testing”类

和MY_CLASS完全一样。只是我没有使用ACL,而是直接从Parse仪表板创建了对象。这次,我能够使用MY_CLASS = '/1/classes/Testing'获取数据。

1 个回答

2

你在使用REST调用的时候,没有登录用户或者会话令牌,所以你只能使用默认的权限。除非你设置了这个类允许匿名读取,而且行的访问控制列表(ACL)也没有限制,否则你是无法获取任何数据的。

如果你想以一个有读取权限的用户身份进行请求,你需要先登录,然后在请求的头部使用会话令牌。

更多信息可以在这里找到:

https://parse.com/docs/rest#users

撰写回答