获取用户标识的概要信息

本文关键字:信息 用户标识 获取 | 更新日期: 2023-09-27 17:49:25

在我们公司,我们创建了一个自定义的Issues应用程序。除了在web界面中使用这个应用程序,我们还希望能够通过git提交钩子自动更改问题的状态(新,确认,测试,解决,…)。基本的工作很好(例如,更改状态,添加注释,…),但我们还想将当前项目的责任更改为特定的用户。在这种特殊情况下,它是该项目的创建者。

我的第一次尝试是这样的:

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);

这会抛出一个"Object not found"异常,因为在resp.ContactIds中不能设置UserId,而必须设置ProfileId

然后我试图通过

获得项目创建器的ProfileId
podio.ContactService.GetUserContactField(creator.Value, "profile_id");

,但这也会抛出一个异常"(此方法不允许以app身份验证")。

那么,当我使用身份验证作为应用程序时,我如何为用户获得适当的配置文件id ?

获取用户标识的概要信息

好的,我找到了一个解决方案,不确定,如果这是可能的其他场景,但它适用于当前的情况。

我没有使用c#接口为ContactItemField设置ContactIds,而是直接设置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);

如果我用user类型设置value,我可以使用已知的userid,服务器上的API负责查找