En mi aplicación C #, estoy tratando de acceder a un servicio Feature que está alojado en arcgis.com. El servicio de funciones se comparte solo con un grupo u organización y NO es público. ¿Cómo puedo acceder a este servicio en mi código de cliente? Aquí está mi código de cliente que arroja una excepción que dice que se requiere el token de autenticación. Tengo el token pero no sé cómo usar ese token para autenticarme para usar el servicio. Este mismo código funciona bien para servicios que se comparten como PUBLIC.
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);
Respuestas:
Su layerUrl es similar en: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
Sólo tiene que añadir el token a Url: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer?token=gGIYjUwXvaO75l1X7LHsgOo2Yueoh1jTGRvrKm7K9ZBE-0TY-EA_Ml7vJtllQK9P2nngX5ciedKgHkjLOEgRSKYR8QhDJMDpWQ09PhTWubNACuFsNIQ3fdlbS6tsPO0h
fuente
http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
se envíen a través de la red incluso después de agregar el token con layerUrl."http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer
y también tengo el token generado. Asumamos token esabc112asdfkljznxc123123lkjkj23klj
tan url completa es como"http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"
Y también he tratado con subcapas individuales comourl:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"
, pero sin suerteToken Authentication required
excepción cuando lo uso en el código publicado en la Pregunta original :)Consulte el siguiente enlace, parece ser que tiene algún problema de proxy. Para acceder a un servicio seguro, debe tener un nombre de usuario y una contraseña, y simplemente escribir un código donde se genera el token en tiempo de ejecución y solo debe agregarlo correctamente
http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//0048000000sv000000
fuente
generateToken
consulta. Simplemente no puedo recuperar los servicios seguros que he publicado.Esta publicación de ejemplo del foro GeoNet está basada en javascript, pero esencialmente logra lo que quieres que suceda.
Sin embargo, para el caso de la API 'ArcObjects for .Net' de ESRI (que podemos decir que está utilizando en función de los espacios de nombres), debe implementar el método IArcGISSingleSignon.GetToken. El método de este objeto iniciará sesión en un usuario en ArcGIS Online (AGOL) y devolverá un token. La fábrica del espacio de trabajo y las definiciones de objetos de la clase de características no requieren el token, pero el inicio de sesión debe ocurrir antes de acceder a los servicios de características seguros de AGOL.
Por último, al igual que un punto API, IWorkspaceFactory es obsoleto e IWorkspaceFactory2 ahora es el objeto de interfaz preferido: las firmas no cambiaron, pero las implementaciones de backend sí.
Publique para confirmar que su complemento C # se conecta correctamente a AGOL una vez que implemente tokens de inicio de sesión único utilizando el método GetToken.
fuente