Cara mengakses layanan Fitur yang dihosting di arcgis.com yang hanya dibagikan dengan grup atau organisasi tertentu

9

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);
WAQ
sumber
Apakah Anda ingin mengatur login pengguna atau login aplikasi untuk aplikasi Anda? Juga, apakah aplikasi Anda menggunakan API berbasis OAuth 2? Tautan Diskusi: resources.arcgis.com/en/help/arcgis-rest-api/index.html#//…
Baltok
Saya tidak menggunakan api berbasis OAuth 2 untuk otentikasi. Saya hanya membuat token menggunakan permintaan GenerateToken dengan mengirimkan kredensial masuk pengguna. Setelah masuk, saya menerbitkan layanan di Arcgis.com dan membagikannya dengan grup. Karena layanan tidak dibagikan sebagai Publik, ketika saya sendiri, atau grup tempat layanan ini dibagikan, mencoba untuk menggunakan layanan ini, kesalahan "Otentikasi token diperlukan" muncul. Saya punya token tapi saya tidak tahu bagaimana saya bisa menggunakan token itu untuk berhasil mengkonsumsi layanan yang aman.
WAQ
Ini telah diposkan silang sebagai salinan langsung dari stackoverflow.com/questions/26429713/… tetapi telah mendapat karunia tambahan di kedua situs
PolyGeo
@ Polyeo Saya memposting salinan pertanyaan yang sama di dua tempat karena saya perlu balasan secepatnya. Apakah itu melanggar aturan atau apa?
WAQ
Kebijakan lintas-posting ke beberapa situs SO / SE telah dibahas di meta.stackexchange.com/questions/64068/... Namun, dengan menempatkan hadiah pada pertanyaan yang sama di kedua situs, pemahaman saya adalah bahwa mereka tidak dapat ditutup pada salah satu situs ( meta.stackexchange.com/questions/14591/… ). Namun demikian, dengan membuat penjawab potensial dari kedua situs mengetahui Q&A di sisi lain, hal itu dapat mengarah pada sinergi dan solusi yang lebih cepat.
PolyGeo

Jawaban:

3

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

lele3p
sumber
Saya memang mencoba menambahkan token dengan layerUrl, tetapi tidak berhasil. Saya menggunakan aplikasi Fiddler untuk melihat url apa yang dihasilkan oleh API atau jaringan, tetapi saya tidak melihat hanya http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServerdikirim melalui jaringan bahkan setelah menambahkan token dengan layerUrl.
WAQ
Pada AGOL, di bawah konten saya klik "Buka di ArcGIS untuk Desktop" dan mulai unduh file item.pitem. Dalam file ini Anda dapat menemukan url dari lapisan fitur. Tambahkan "? Token = <yourtoken> & f = json" ke url dan buka di browser. Katakan apa yang terjadi.
lele3p
Saya memiliki Url dari layer yang ada "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServerdan saya juga memiliki token yang dihasilkan. mari kita asumsikan token abc112asdfkljznxc123123lkjkj23kljbegitu lengkap url seperti "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"Dan saya juga telah mencoba dengan sublapisan individu seperti url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"tapi tidak berhasil
WAQ
Saya dapat melihat layer di browser menggunakan url dan token di atas. Hanya saja saya mendapatkan Token Authentication requiredpengecualian ketika saya menggunakannya dalam kode yang diposting di Pertanyaan asli :)
WAQ
total stab in dark - mampukah PropertySet memiliki properti TOKEN yang tidak berdokumen?
MC5
1

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

Ajay Giri
sumber
Saya memiliki nama pengguna, kata sandi, dan telah membuat token menggunakan generateTokenkueri. Hanya saja tidak dapat mengambil layanan aman yang telah saya terbitkan.
WAQ
1

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.

JasonInVegas
sumber
Saya memang mencoba `IArcGISSingleSignOn.GetToken 'dan mendapatkan token yang dihasilkan setelah memasukkan kredensial saya ke dialog masuk yang muncul. Setelah itu dieksekusi kode yang sama seperti dalam pertanyaan, tetapi masih mendapatkan pengecualian yang sama "Diperlukan token otentikasi".
WAQ