В моем приложении на C # я пытаюсь получить доступ к сервису Feature, который размещен на arcgis.com. Сервис объектов доступен только группе или организации и НЕ является общедоступным. Как я могу получить доступ к этой услуге в моем коде клиента. Вот мой код клиента, который выдает исключение, сообщающее, что требуется токен аутентификации. У меня есть токен, но я не знаю, как использовать этот токен для аутентификации для использования сервиса. Этот же код прекрасно работает для служб, которые являются общими для общего доступа.
IPropertySet sipPS = new PropertySet();
sipPS.SetProperty("DATABASE", layerUrl);
IWorkspaceFactory sipWSF = (IWorkspaceFactory)new ESRI.ArcGIS.Carto.FeatureServiceWorkspaceFactory();
IWorkspace sipWS = sipWSF.Open(sipPS, 0);
IFeatureWorkspace sipFWS = (IFeatureWorkspace)sipWS;
IGroupLayer grpLayer = new GroupLayerClass();
grpLayer.Name = Constants.ArcGISOnlineGroupLayerName;
IFeatureClass sipFC = sipFWS.OpenFeatureClass("0");
IFeatureLayer fl = new FeatureLayerClass();
fl.Name = featureLayerName;
fl.FeatureClass = sipFC;
grpLayer.Add(fl as ILayer);
Ответы:
Ваш layerUrl похож на: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
Просто добавьте маркер URL: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer?token=gGIYjUwXvaO75l1X7LHsgOo2Yueoh1jTGRvrKm7K9ZBE-0TY-EA_Ml7vJtllQK9P2nngX5ciedKgHkjLOEgRSKYR8QhDJMDpWQ09PhTWubNACuFsNIQ3fdlbS6tsPO0h
источник
http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
отправки только по сети даже после добавления токена с layerUrl."http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer
и у меня также есть сгенерированный токен. давайте предположим, что токенabc112asdfkljznxc123123lkjkj23klj
настолько полный, как URL,"http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"
и я также пробовал с отдельными подслоями, как,url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"
но не повезлоToken Authentication required
исключение, когда использую его в коде, опубликованном в оригинальном Вопросе :)Пожалуйста, обратитесь по ссылке ниже, похоже, что у вас есть проблема с прокси. Для доступа к защищенным сервисам вам нужно иметь имя пользователя и пароль и просто написать код, в котором токен генерируется во время выполнения, и вам просто нужно правильно добавить его
http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//0048000000sv000000
источник
generateToken
запроса. Просто не могу получить защищенные сервисы, которые я опубликовал.Этот пример поста с форума GeoNet основан на javascript, но, по сути, он выполняет то, что вы хотите.
Однако в случае API ESRI «ArcObjects for .Net» (который мы можем сказать, что вы используете на основе пространств имен) вы должны реализовать метод IArcGISSingleSignon.GetToken. Метод этого объекта зарегистрирует пользователя в ArcGIS Online (AGOL) и вернет токен. Фабрика рабочей области и определения объектов классов объектов не требуют токена, но вход в систему должен произойти до получения доступа к защищенным сервисам объектов AGOL.
Наконец, как точка API, IWorkspaceFactory устарел, и теперь IWorkspaceFactory2 является предпочтительным интерфейсным объектом. Сигнатуры не изменились, но реализации бэкэнда изменились.
Пожалуйста, оставьте сообщение, чтобы убедиться, что ваша надстройка C # правильно подключается к AGOL, как только вы внедрили токены единого входа с помощью метода GetToken.
источник