Приложение с идентификатором xxxxxxxx не имеет правильной view_structure в приложении с идентификатором гггг

#ios #swift #podio

#iOS #swift #podio

Вопрос:

Я пытаюсь создать новый элемент в приложении podio в приложении iOS с. Следующие строки кода соответствуют документации в podio, но у меня ошибка 403 с темой в качестве сообщения об ошибке. Я предположил, что мне нужно аутентифицировать сеанс как приложение, поскольку я думаю, что оно будет использовать идентификатор приложения для создания PKTItem в приложении, используемом для входа.

 let item = PKTItem(forAppWithID: lastItem   1) 
item?.setValue(1, forField: "service") 
item?.setValue(testPet, forField: "pet")

item?.save().onComplete({(response, error) in 
    if (error != nil){ 
        print("error: (error)") 
    } 
    else{ 
        print("response") 
    } 
})
  

Я предполагал, что элемент будет создан в приложении, которое использовалось для подписи с элементом, имеющим идентификатор lastItem 1 , я попытался проверить, верны ли идентификаторы объекта

 //this is supposed to be lastItem   1
print("PKTItem ID: (item?.appItemID)")
//this is supposed to be the app ID where it should create the new item
print("PKTItem AppID: (item?.appID)")

PKTItem ID: Optional(0)
PKTItem AppID: Optional(1) 
  

Я не понимаю, что я делал неправильно. Пожалуйста, помогите мне.

Комментарии:

1. Я понятия не имею, что такое podio, но для меня инициализация PKTItem(forAppWithID:) должна вызываться с идентификатором приложения, по крайней мере, так я читаю forAppWithID

2. согласно документации, это должен быть идентификатор элемента, поскольку они используют указанный там идентификатор для обновления элемента, если идентификатор существует podio.github.io/podio-objc/items

Ответ №1:

Похоже, вы используете неправильный набор учетных данных для просмотра элемента приложения, с которым пытаетесь работать. Как вы авторизовались? У вас есть правильный идентификатор приложения и комбинация токенов для этого скрипта?

Обычно вы увидите [PodioKit authenticateAutomaticallyAsAppWithID:123456 token:@"my-app-token"]; , и это позволяет вам взаимодействовать с чем угодно в приложении 123456, но похоже, что вы пытаетесь взаимодействовать с данными в 2 приложениях на основе сообщения об ошибке. Если это реализация небольшого масштаба (или для целей тестирования), вы можете использовать вместо этого метод аутентификации как пользователя. Вот документация, которая у них есть по аутентификации для библиотеки Objective C.

 PKTAsyncTask *authTask = [PodioKit authenticateAsUserWithEmail:@"myname@mydomain.com" password:@"p4$$w0rD"];

[authTask onComplete:^(PKTResponse *response, NSError *error) {
  if (!error) {
    // Successfully authenticated
  } else {
    // Failed to authenticate, double check your credentials
  }
}];
  

Комментарии:

1. я на самом деле использую authenticateAsApp , когда я получаю ошибку (403), когда я использовал authenticateAsUser , я получаю 404.

2. что касается ошибок в моем приложении, то это единственная ошибка, поскольку я могу безупречно извлекать элементы из выбранного приложения

3. Когда вы проходите аутентификацию как пользователь, где происходит 404? Это связано с аутентификацией или это происходит при вызове Get Item? Если оно находится в вызове Get Item, можете ли вы попробовать передать ему определенный идентификатор элемента вместо переменной, чтобы подтвердить, что это проблема 404, а не проблема с пустой переменной?

4. 404 был, когда я пытался создать PKTItem. я уже нашел решение в их документации, отличной от objective-c. согласно их документации: «Обновление элемента работает очень похоже на создание, но вместо предоставления идентификатора приложения, как мы делаем при создании элементов, вы должны указать идентификатор элемента при обновлении».