0

当社ではカスタムIssuesアプリを作成しました。このアプリを Web インターフェースで使用することに加えて、git commit フックを介して問題の状態 (新規、確認済み、テスト済み、解決済みなど) を自動的に変更できるようにしたいと考えています。基本は正常に機能しています (つまり、状態の変更、メモの追加など)。ただし、現在のアイテムの責任を特定のユーザーに変更したいと考えています。その特別な場合、このアイテムの作成者です。

私の最初の試みは次のとおりでした:

var appid = 1234; var itemid = 1;
var item = podio.ItemService.GetItemByAppItemId(appid, itemid);
var update = new Item {ItemId = item.ItemId};

var creator = item.CreatedBy.Id;
var resp = update.Field<ContactItemField>("responsibility");
resp.ContactIds = new List<int>{creator.Value};

//change some other fields as well

podio.ItemService.UpdateItem(update);

これは、「オブジェクトが見つかりません」という例外をスローresp.ContactIdsUserIdますProfileId

ProfileId次に、アイテムクリエーターのを取得しようとしました

podio.ContactService.GetUserContactField(creator.Value, "profile_id");

しかし、これも例外「(アプリとしての認証はこのメソッドでは許可されていません」)をスローします。

では、認証をアプリとして使用するときに、ユーザーの適切なプロファイル ID を取得するにはどうすればよいでしょうか?

4

1 に答える 1

1

OK、回避策を見つけました。これが他のシナリオで可能かどうかはわかりませんが、現在のケースでは機能します。

ContactIdsの設定にC# インターフェイスを使用する代わりにContactItemField、json 値を直接設定します。

var appid = 1234; var itemid = 1;
var item = podio.ItemService.GetItemByAppItemId(appid, itemid);
var update = new Item {ItemId = item.ItemId};

var creator = item.CreatedBy.Id;
var resp = update.Field<ContactItemField>("responsibility");
resp.ContactIds = new List<int>(); // set to an empty list, so that resp.Values is initialized to an empty JArray

var u = new JObject { {"value", new JObject { {"type" , "user" }, {"id", creator } } } };
responsibleField.Values.Add(u); //add the new user to the Values of the field

//change some other fields as well
podio.ItemService.UpdateItem(update);

valuewith 型を設定するとuser、既知の型を使用できuserid、サーバー上の API がルックアップを処理します。

于 2016-06-27T11:27:32.407 に答える