Основано на solution here Я отправляю этот ответ.
Представьте, что вы создали URL-адрес, и он не работает, и вы получили 401. Затем через некоторое время вы поняли ошибку, которую Opps! Параметры, которые я прошел, нуждались в скобке, и вы снова запускали код, и вы снова получили 401. Почему это?
Это связано с тем, что параметры apiKey, Signature и Expire совпадают, и вы изменили только другие параметры с помощью вашего запроса GET. Однако эти три параметра используются для аутентификации пользователя, так что означает, что старая подпись, которая была сгенерирована для отказа в разрешении, снова откажет ей независимо от того, что.
Итак, чтобы исправить это, я только что изменил срок годности от 1577922200
до 1577933200
. Я мог бы изменить его на что угодно, но дело в том, что мне просто нужно дать что-то новое, чтобы можно было создать новую подпись. Поэтому, когда я сменил его, он начал работать.
ДРУГИЕ ВОЗМОЖНЫЕ ПРИЧИНЫ
При принятии подписи с использованием SHA1
использовать NSString *string_to_sign = [NSString stringWithFormat:@"%@:%@:%@:%@",api_key,http_method,route,expires];
согласно документации.Но для того, чтобы сделать CCHmac
вы должны передать ему две вещи:
- Key
- данных
и на основе link он создан как
const char *cKey = [api_private_key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [string_to_sign cStringUsingEncoding:NSASCIIStringEncoding];
Так что я было ошибкой в том, что я использовал API Key
в cKey
вместо API Private Key
. Поэтому я меняю его, как сказано в учебнике, и это сработало. В противном случае я получал 401
неважно, что я пытаюсь.
Если я хочу добавить feild_filters или получить одну запись entry_Id, она всегда дает 401 независимо от того, что я делаю. Если я использую это с '/', то это то же самое, что я использую без него, это одно и то же. Хотя браузер автоматически добавляет '/' в конце URL. Я пытаюсь реализовать его на iOS, и я следил за https://github.com/ibjects/GFAPI-iOS –