Пользователь с id # не имеет права просмотра профиля с id #

Я пытаюсь добавить контакт в поле контакта, поле в настоящее время не имеет информации в приложении. Первоначально я пытался сделать это через аутентификацию приложения, но нашел этот пост на форуме Podio и этот здесь и изменил аутентификацию на пользователя.

Пользователь является администратором рабочей области, добавляемый мной profile_id является членом рабочей области, и приложение не имеет на него ограничений.

Что я упускаю и как решить проблему?

$item_id = 1111111;
$field_id = 2222222;
$profile_id = 3333333;

Podio::authenticate_with_password( 'admin_user_email', 'password' );
$item = PodioItem::get_basic( $item_id );
$external_id = 'sign-off-authority';
$contact = new PodioContactItemField( array( 'field_id' => $field_id, 'external_id' => $external_id, 'values' => array( 'profile_id' => $profile_id ) ) );
$item->fields[] = $contact;
$item->save();

приводит к следующей трассировке стека:

Fatal error: 
Uncaught PodioForbiddenError: 
"The user with id #### does not have the right view on profile with id ####" 
Request URL: http://api.podio.com/item/1111111 Stack Trace: 
#0 C:\xampp\htdocs\podio-api\lib\Podio.php(322): Podio::request('PUT', '/item/1111111', Array) 
#1 C:\xampp\htdocs\podio-api\models\PodioItem.php(184): Podio::put('/item/1111111', Array) 
#2 C:\xampp\htdocs\podio-api\models\PodioItem.php(67): PodioItem::update(1111111, Array, Array) 
#3 C:\xampp\htdocs\getItems.php(48): PodioItem->save() 
#4 {main} thrown in C:\xampp\htdocs\podio-api\lib\Podio.php on line 286

person APW    schedule 01.12.2016    source источник
comment
Вы уверены, что не смешиваете user_id и profile_id?   -  person Pavlo - Podio    schedule 02.12.2016
comment
да, я сделал запрос на получение для всех членов рабочей области, чтобы найти их profile_id и убедиться, что они были членами рабочей области   -  person APW    schedule 02.12.2016


Ответы (2)


Я обнаружил, что библиотека php API php или podio преобразовывала мое сохраненное значение в массив и не сохраняла его как целочисленное значение. Я пытался использовать как user_id, так и profile_id, но ни один из них не работал, пока я не понял через выходные журналы, что происходит. Мне пришлось обновить код до этого:

$profile_id = 3333333;
$arr = [];
$arr['profile_id'] = $profile_id;
$contact = new PodioContactItemField( array( 'field_id' => $field_id, 'external_id' => $external_id, 'values' => $arr ) );

создав массив и добавив его к объекту, он сохранил заданный формат и был принят API. Теперь код работает нормально.

person APW    schedule 08.12.2016

У меня работает с использованием user_id вместо profile_id. Можешь попробовать?

Вот рабочий пример на ruby:

Podio.client.authenticate_with_credentials(<user_email>, <user_password>)
field_external_id = 'requester'
field_new_value = [{'value' => {'type' => 'user', 'id' => <some_other_user_id>}}, 
                   {'value' => {'type' => 'user', 'id' => <different_user_id>}}]
Podio::ItemField.update(item_id, field_external_id, field_new_value)
person Pavlo - Podio    schedule 02.12.2016