获取用户标识的概要信息
本文关键字:信息 用户标识 获取 | 更新日期: 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负责查找