我正在使用Apigee BaaS管理门户网站和Apigee iOS SDK,试图创建适当的Apache Ant模式,以允许我在用户实体和设备实体之间创建关系。
默认情况下,无论何时使用Facebook登录创建用户,这两个集合(/users和/devices)之间都已经存在连接关系。但每当我cURL GET请求时,我都不会返回任何实体。因此,我尝试手动POST创建关系。
我试图使用iOS Apigee SDK创建关系的一个例子:
ApigeeClientResponse *registerResponse = [[self.apigeeClient dataClient] connectEntities:@"users" connectorID:user_uuid type:@"devices" connecteeID:userDeviceUUID];
@try {
NSLog(@"Response: %@", registerResponse.response);
} @catch (NSException *e) {
NSLog(@"Error: %@", e);
}
我得到的回应:
Response: Subject does not have permission [applications:post:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx:/users/xxxxx-xxxx-xxxx-xxxx/devices/xxxxx-xxxx-xxxx-xxxx]
我尝试了以下模式,但到目前为止对我不起作用:
POST /roles/default/permissions {"permission":"get,post,put:**/devices"}
POST /roles/default/permissions {"permission":"get,post,put:/devices/**"}
POST /roles/default/permissions {"permission":"get,post,put:**/devices"}
POST /roles/default/permissions {"permission":"get,post,put:**/devices/**"}
POST /roles/default/permissions {"permission":"get,post,put:/users/*/devices/**"}
POST /roles/default/permissions {"permission":"get,post,put:/users/*/devices/*"}
POST /roles/default/permissions {"permission":"get,post,put:/users/${user}/devices/**"}
POST /roles/default/permissions {"permission":"get,post,put:/users/${user}/devices/*"}
POST /roles/default/permissions {"permission":"get,post,put:/users/${user}/devices"}
POST /roles/default/permissions {"permission":"get,post,put:/users/${user}/**"}
POST /roles/default/permissions {"permission":"get,post,put:/users/${user}/*"}
我已经把它缩小到这些可能的原因,为什么这可能不起作用:
- 我的ApacheAnt模式有问题
- 这些集合是默认的Apigee集合,可能有严格的规则
- Apache iOS SDK的问题
有人能提出一个模式吗,或者帮助我确定为什么我没有建立这种关系的权限?
非常感谢Chris
Chris,设置权限后,您是否会在调用中传递令牌?也就是说,您是否在尝试创建连接之前让用户登录?
如果是,则默认角色就是您要使用的角色。如果没有,那么将调用Guest角色。或者,您可以创建一个新角色,然后将其分配给用户,也可以设置用户实体的权限(请参阅用户部分的管理门户)。
至于使用什么权限,这个应该做到:
/设备/**
尽管你的其他几个也应该工作:
/用户/*/设备/**/用户/${user}/设备/**
我不知道目前有任何关于这个问题的未决bug通知单。这并不意味着它不是一个bug。
为了测试您是否使用了正确的角色,您可以为POST添加/**,这应该允许对任何和所有端点进行POST操作。