Bloomberg API-如何获取用户订阅的用户权限

Bloomberg API-如何获取用户订阅的用户权限,api,subscription,bloomberg,entitlements,Api,Subscription,Bloomberg,Entitlements,我只是想检查彭博api数据源中用户订阅数据的用户权限 为此,我尝试运行Bloombergs示例“AuthenticationsVerificationSubscriptionExample”。由于它乍一看似乎是有效的,所以我第二眼就意识到,我从api收到的数据没有任何权利 这意味着: public void processSubscriptionDataEvent(Event eventObj, Session session) { foreach(Me

我只是想检查彭博api数据源中用户订阅数据的用户权限

为此,我尝试运行Bloombergs示例“AuthenticationsVerificationSubscriptionExample”。由于它乍一看似乎是有效的,所以我第二眼就意识到,我从api收到的数据没有任何权利

这意味着:

public void processSubscriptionDataEvent(Event eventObj, Session session)
        {

            foreach(Message msg in eventObj)
            {

                bool needsEntitlement = msg.HasElement(Name.GetName("EID"));   
            }

             }
始终为“false”,因为没有名为“EID”的字段可用

彭博社服务网站是否有问题,或者更好,是否有任何可用的文档,如何在数据订阅中使用用户权限


提前感谢,

首先,您需要订阅“EID”字段,因为默认情况下它不会返回

如果该字段未在消息中返回,或为空值,则表示此消息中的数据不需要授权。否则,调用以下函数并传递EID值:

bool bEntitled = userIdentity.hasEntitlements(EID);
函数返回值指示用户是否有权限


不需要授权的数据可以与在EMR中注册的用户共享(如果是B-Pipe),或者与公司内的任何终端用户共享(如果是SAPI),而无需进一步的授权检查。未在EMR中注册的用户或非终端用户不应分别访问B-Pipe数据或SAPI数据。

我有一些代码可以做到这一点:
Element returnedEids=response.getElement(“eids”);int numeids=returnedEids.numValues();对于(int i=0;i。所以它看起来像是在使用
eids
而不是
eid
。不,也没有字段“eids”,甚至在整个消息中没有任何名称包含“eid”的字段。或者我的“Event.EventType.SUBSCRIPTION\u DATA”类型的消息是否未启用以检查用户权限?我指的代码解析已发送到
//blp/apiauth
用户权限请求的结果。因此,可能不是您想要的。UserAuthenticationsRequest在Api V3中已被弃用,不应用于获取用户权限。唯一的方法(也是正确的方法)是从用户标识对象提取用户的EID。在撰写本文时,该列表没有直接公开给Api,但是,有一种解决方法可以实现这一点。在大多数情况下,您不需要用户EID的列表。此外,来自assylias的上述代码片段仅适用于响应消息,而不适用于订阅数据。谢谢!已更改结果,但仍不存在EID字段。但是如果我请求EID字段,则提供的字段数量将从大约870个减少到92个<代码>新订阅(“部分股权”、“上次价格、EID”、空、新CorrelationID(“部分股权”)
我假设我的订阅是正确的?无论如何,我无法想象每个用户都可以使用实时数据?(因为我不需要通过身份验证才能收到这些字段?)您的回复中有许多问题需要单独解决:1。您在第一篇文章中提到了“用户权利”,这意味着您正在连接SAPI或B-Pipe,而不是DAPI。请确认。2.如果您正在连接到SAPI或B-Pipe,那么您是否正在向session.Subscribe()传递标识对象?如果是,该标识是用于用户还是应用程序的?3。订阅EID不应“减少”返回字段的数量。通常,您将收到比订阅的字段更多的字段,但您应该只使用字段中的值。不能保证每次都会返回其他字段。如果在B-Pipe中启用了字段筛选,那么您应该只收到您订阅的字段。4。调用session.Subscribe()后,您应该在SUBSCRIPTION\u状态事件中获得SubscriptionStarted或SubscriptionFailure消息。这是知道您的订阅是否有效的唯一方法。如果订阅开始,则您应收到初始绘制-请订阅MKTDATA_EVENT_TYPE和MKTDATA_EVENT_SUBTYPE字段,以获取有关消息内容的更多信息。我还建议订阅IS_DELAYED_STREAM.5。如果您在不传递任何标识的情况下连接yo-SAPI或B-Pipe,则意味着您的实例允许服务器模式。在这种情况下,您仍然需要执行授权检查以保持合规性!6.如果您可以共享如何调用session.Subscribe()和输出的代码片段,这会有所帮助。这将帮助我更好地理解这个问题。