我正在使用Apigee BaaS管理员门户网站和Apigee iOS SDK,尝试创建适当的Apache Ant模式,以允许我在用户实体和设备实体之间创建关系。
默认情况下,每当您使用Facebook登录创建用户时,这两个集合(/ users和/ devices)之间就已存在关联关系。但每当我发出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}/*"}
我已将其缩小到可能无法解决的原因:
有人可以提出一个模式,或者帮助我确定为什么我没有权限建立这种关系?
非常感谢 克里斯
答案 0 :(得分:0)
Chris,在您设置权限后,您是否在通过电话时传递令牌?这意味着,在尝试创建连接之前,您是否已将用户登录?
如果是,则默认角色是您要使用的角色。如果不是,则Guest角色是将被调用的角色。或者,您可以创建一个新角色,然后将其分配给用户,或者您可以在用户实体上设置权限(请参阅用户部分管理门户以执行此操作)。
就使用权限而言,这个应该可以解决问题:
/设备/ **
虽然你的其他几个人也应该工作:
/用户/ * /设备/ ** /用户/ $ {用户} /设备/ **
我不知道有关此问题的任何当前待处理的错误票据。这并不意味着它不是一个错误。
要测试您使用的是正确的角色,可以为POST添加/ **,这样就可以对任何和所有端点进行POST操作。