Yalnızca belirli gruplarla veya kuruluşlarla paylaşılan arcgis.com'da barındırılan bir Özellik hizmetine nasıl erişilir


9

Benim C # uygulamamda arcgis.com'da barındırılan bir Özellik hizmetine erişmeye çalışıyorum. Özellik hizmeti yalnızca bir grup veya kuruluşla paylaşılır ve herkese açık DEĞİLDİR. Bu hizmete müşteri kodumdan nasıl erişebilirim? İşte Kimlik Doğrulama Simgesinin gerekli olduğunu belirten bir istisna atan istemci kodum. Jeton var ama nasıl hizmet kullanmak için kimlik doğrulaması için bu belirteci kullanmak bilmiyorum. Aynı kod, KAMU olarak paylaşılan hizmetler için iyi çalışır.

   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);

Uygulamanız için kullanıcı girişleri veya uygulama girişleri ayarlamak istiyor musunuz? Ayrıca, uygulamanız OAuth 2 tabanlı API'leri kullanıyor mu? Tartışma Bağlantısı: resources.arcgis.com/en/help/arcgis-rest-api/index.html#//…
Baltok

Kimlik doğrulama için OAuth 2 tabanlı API kullanmıyorum. Ben sadece kullanıcının giriş kimlik bilgilerini ileterek GenerateToken sorgusu kullanarak bir belirteç üretiyorum. Giriş yaptıktan sonra Arcgis.com'da bir hizmet yayınladım ve bunu bir grupla paylaştım. Hizmet Ortak olarak paylaşılmadığından, kendim veya hizmetin paylaşıldığı grup bu hizmeti kullanmaya çalıştığında, "Kimlik doğrulama belirteci gerekli" hatası görüntülenir. Jetonum var ama güvenli hizmeti başarıyla tüketmek için bu jetonu nasıl kullanabilirim bilmiyorum.
WAQ


@PolyGeo Acil bir cevaba ihtiyacım olduğu için aynı sorunun kopyasını iki yerde yayınladım. Bu bir kuralın ihlali mi yoksa ne?
WAQ

Birden fazla SO / SE sitesine çapraz gönderim politikası meta.stackexchange.com/questions/64068/… adresinde tartışılmıştır. Ancak, her iki sitede de aynı soruya bir ödül koyarak, bunların benim her iki siteden de ( meta.stackexchange.com/questions/14591/… ). Bununla birlikte, her iki siteden gelen potansiyel cevapları diğer soru ve cevaplardan haberdar ederek sinerjilere ve daha hızlı bir çözüme yol açabilir.
PolyGeo

Yanıtlar:


3

Simgeyi layerUrl ile eklemeye çalıştım, ama şansım yoktu. API veya ağ tarafından hangi URL'lerin üretildiğini görmek için Fiddler uygulamasını kullandım, ancak http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServertoken'i layerUrl ile ekledikten sonra bile yalnızca ağ üzerinden gönderildiğini görmüyorum.
WAQ

AGOL'de, içeriklerim altında "ArcGIS for Desktop'ta Aç" ı tıklayın ve item.pitem dosyasını indirmeye başlayın. Bu dosyada, özellik katmanının URL'sini bulabilirsiniz. URL'ye "? Token = <yourtoken> & f = json" ekleyin ve bir tarayıcıda açın. Bana ne olduğunu anlat.
lele3p

Katmanın URL'si var "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServerve ayrıca jeton üretildi. belirteç abc112asdfkljznxc123123lkjkj23kljçok tam url gibi olduğunu varsayalım "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"Ve ben de gibi url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"ama hiçbir şans gibi bireysel alt katmanları ile denedim
WAQ

Yukarıdaki url ve jetonu kullanarak tarayıcıdaki katmanı görüntüleyebiliyorum. Onun sadece Token Authentication requiredorijinal
soruya

karanlıkta toplam bıçak - PropertySet belgesiz bir TOKEN özelliğine sahip olabilir mi?
MC5

1

Lütfen aşağıdaki bağlantıya bakın, bazı proxy sorunlarınız var gibi görünüyor. Güvenli bir hizmete erişmek için kullanıcı adınız ve şifreniz olması ve sadece kodun çalışma zamanında oluşturulduğu bir kod yazmanız ve sadece doğru bir şekilde eklemeniz gerekir

http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//0048000000sv000000


Kullanıcı adı, şifre var ve generateTokensorgu kullanarak belirteç oluşturduk . Yayınladığım güvenli hizmetleri alamıyorum.
WAQ

1

GeoNet forumundaki bu örnek yayın javascript tabanlıdır, ancak aslında ne olmasını istediğinizi başarır.

Ancak, ESRI'nin '.NetObjects for .Net' API'sı için (Ad Alanlarına dayalı olarak kullandığınızı söyleyebiliriz) IArcGISSingleSignon.GetToken yöntemini uygulamanız gerekir. Bu nesnenin yöntemi bir kullanıcıyı ArcGIS Online'da (AGOL) imzalar ve bir jeton döndürür. Çalışma alanı fabrikası ve özellik sınıfı nesne tanımları belirteci gerektirmez, ancak güvenli AGOL özellik hizmetlerine erişmeden önce oturum açma işlemi gerçekleşmelidir.

Son olarak, bir API noktası gibi, IWorkspaceFactory artık kullanılmıyor ve IWorkspaceFactory2 artık tercih edilen arayüz nesnesidir. - imzalar değişmedi, ancak arka uç uygulamaları değişti.

GetToken yöntemini kullanarak tek oturum açma belirteçlerini uyguladıktan sonra C # eklentinizin AGOL ile doğru bir şekilde bağlandığını onaylamak için lütfen gönderin.


`` IArcGISSingleSignOn.GetToken '' i denedim ve belirteçlerimi görünen oturum açma iletişim kutusuna girdikten sonra oluşturdum. Daha sonra sorudakiyle aynı kodu çalıştırdı, ancak yine de "Kimlik doğrulama jetonu gerekli" istisnasını alıyor.
WAQ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.