重力形式 API 权限被拒绝
Gravity form API Permission denied
我开始关注 this github tutorial 它成功地 GET
所有条目和 POST
数据到一个表单。
因此,在那之后,随着我的前进,我想在我的 GET 调用中添加搜索过滤器。经过大量研究和尝试不同的方法后,我发现我总是得到
{
status: 401,
response: "Permission denied"
}
作为我的 JSON 回复。在此之后,我实施了搜索,但没有成功:https://www.stevenhenty.com/gravity-forms-api/#filter_entries
通过咨询一些 php 人,他们告诉我这是权限问题,您的电话是正确的。所以我去了 here 并尝试了两种方法 WordPress Cookie 身份验证 和 外部客户端:签名身份验证 但响应是相同的。
我正在使用 Cookie NSString *string = [NSString stringWithFormat:@"%@%@?_gf_json_nonce=%@",BaseURLString,route,[[NSUUID UUID] UUIDString]];
_gf_json_nonce
搜索后我知道它将是 phone 的 UDID,这就是我使用它的原因。
如果我使用另一个签名,我将其用作 NSString *string = [NSString stringWithFormat:@"%@%@?api_key=%@&signature=%@&expires=%@",BaseURLString,route,api_key,signature,expires];
结果是相同的。
因此,如果我想将此调用中的任何一个与搜索过滤器一起使用,我就会这样做
NSDictionary *params = @{@"key": @"2",
@"value": @"my@email.com",
@"operator": @"contains"};
NSMutableDictionary *modify = [NSMutableDictionary new];
[modify setObject:params forKey:@"field_filters"];
[manager GET:stringURL parameters:modify progress:nil success:^(NSURLSessionTask *task, id responseObject) {
所以任何关于如何让它进行身份验证以便调用可以开始工作的想法。
UPDATE
1:我也试过this但是没用。我也评论过
确保将搜索参数设置为 URL 编码的 JSON 字符串,如下所示:
http://yourdomain/gravityformsapi/forms/3/entries/?api_key=[snip]&signature=[snip]%3D&expires=[snip]&search={%22field_filters%22:%20[{%22key%22:%20%222%22,%20%22value%22%20:%20%@gmailcom%22,%20%22operator%22%20:%20%22contains%22}]}
所以,为了更容易阅读,搜索参数看起来像这样:
{
"field_filters": [
{
"key": "2",
"value": "@gmail.com",
"operator": "contains"
}
]
}
我开始关注 this github tutorial 它成功地 GET
所有条目和 POST
数据到一个表单。
因此,在那之后,随着我的前进,我想在我的 GET 调用中添加搜索过滤器。经过大量研究和尝试不同的方法后,我发现我总是得到
{
status: 401,
response: "Permission denied"
}
作为我的 JSON 回复。在此之后,我实施了搜索,但没有成功:https://www.stevenhenty.com/gravity-forms-api/#filter_entries
通过咨询一些 php 人,他们告诉我这是权限问题,您的电话是正确的。所以我去了 here 并尝试了两种方法 WordPress Cookie 身份验证 和 外部客户端:签名身份验证 但响应是相同的。
我正在使用 Cookie NSString *string = [NSString stringWithFormat:@"%@%@?_gf_json_nonce=%@",BaseURLString,route,[[NSUUID UUID] UUIDString]];
_gf_json_nonce
搜索后我知道它将是 phone 的 UDID,这就是我使用它的原因。
如果我使用另一个签名,我将其用作 NSString *string = [NSString stringWithFormat:@"%@%@?api_key=%@&signature=%@&expires=%@",BaseURLString,route,api_key,signature,expires];
结果是相同的。
因此,如果我想将此调用中的任何一个与搜索过滤器一起使用,我就会这样做
NSDictionary *params = @{@"key": @"2",
@"value": @"my@email.com",
@"operator": @"contains"};
NSMutableDictionary *modify = [NSMutableDictionary new];
[modify setObject:params forKey:@"field_filters"];
[manager GET:stringURL parameters:modify progress:nil success:^(NSURLSessionTask *task, id responseObject) {
所以任何关于如何让它进行身份验证以便调用可以开始工作的想法。
UPDATE
1:我也试过this但是没用。我也评论过
确保将搜索参数设置为 URL 编码的 JSON 字符串,如下所示:
http://yourdomain/gravityformsapi/forms/3/entries/?api_key=[snip]&signature=[snip]%3D&expires=[snip]&search={%22field_filters%22:%20[{%22key%22:%20%222%22,%20%22value%22%20:%20%@gmailcom%22,%20%22operator%22%20:%20%22contains%22}]}
所以,为了更容易阅读,搜索参数看起来像这样:
{
"field_filters": [
{
"key": "2",
"value": "@gmail.com",
"operator": "contains"
}
]
}