Dalam aplikasi C # saya, saya mencoba mengakses layanan Fitur yang di-host di arcgis.com. Layanan fitur hanya dibagikan dengan grup atau organisasi dan BUKAN publik. Bagaimana saya bisa mengakses layanan ini dalam kode klien saya. Ini adalah kode klien saya yang melempar pengecualian yang mengatakan Token Otentikasi diperlukan. Saya memiliki token tetapi tidak tahu bagaimana cara menggunakan token untuk diautentikasi menggunakan layanan. Kode yang sama ini berfungsi dengan baik untuk layanan yang dibagikan sebagai 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);
Jawaban:
LayerUrl Anda serupa di: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
Hanya menambahkan token untuk Url: http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer?token=gGIYjUwXvaO75l1X7LHsgOo2Yueoh1jTGRvrKm7K9ZBE-0TY-EA_Ml7vJtllQK9P2nngX5ciedKgHkjLOEgRSKYR8QhDJMDpWQ09PhTWubNACuFsNIQ3fdlbS6tsPO0h
sumber
http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServer
dikirim melalui jaringan bahkan setelah menambahkan token dengan layerUrl."http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer
dan saya juga memiliki token yang dihasilkan. mari kita asumsikan tokenabc112asdfkljznxc123123lkjkj23klj
begitu lengkap url seperti"http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"
Dan saya juga telah mencoba dengan sublapisan individu sepertiurl:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"
tapi tidak berhasilToken Authentication required
pengecualian ketika saya menggunakannya dalam kode yang diposting di Pertanyaan asli :)Silakan merujuk tautan di bawah ini, sepertinya Anda memang memiliki masalah proxy. Untuk mengakses layanan yang diamankan, Anda harus memiliki nama pengguna dan kata sandi dan hanya menulis kode di mana token dihasilkan pada waktu berjalan dan Anda hanya perlu menambahkannya dengan benar
http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//0048000000sv000000
sumber
generateToken
kueri. Hanya saja tidak dapat mengambil layanan aman yang telah saya terbitkan.Ini contoh posting dari forum GeoNet adalah javascript berbasis, tetapi pada dasarnya menyelesaikan apa yang Anda inginkan terjadi.
Namun, untuk kasus API 'ArcObjects for .Net' ESRI (yang dapat kami beri tahu Anda gunakan berdasarkan Namespaces), Anda harus menerapkan metode IArcGISSingleSignon.GetToken. Metode objek ini akan masuk pengguna ke ArcGIS Online (AGOL) dan mengembalikan token. Pabrik ruang kerja dan definisi objeklass-class tidak memerlukan token, tetapi signon harus terjadi sebelum mengakses layanan fitur AGOL yang diamankan.
Terakhir, sama seperti titik API, IWorkspaceFactory sudah usang dan IWorkspaceFactory2 sekarang menjadi objek antarmuka yang disukai .-- tandatangan tidak berubah tetapi implementasi backend tidak.
Silakan kirim untuk mengonfirmasi bahwa add-in C # Anda terhubung dengan benar ke AGOL setelah Anda menerapkan token dengan menggunakan metode GetToken.
sumber