Cách truy cập dịch vụ Tính năng được lưu trữ trên arcgis.com chỉ được chia sẻ với các nhóm hoặc tổ chức cụ thể


9

Trong ứng dụng C # của mình, tôi đang cố gắng truy cập dịch vụ Tính năng được lưu trữ trên arcgis.com. Dịch vụ tính năng chỉ được chia sẻ với một nhóm hoặc tổ chức và KHÔNG công khai. Làm thế nào tôi có thể truy cập dịch vụ này trong mã khách hàng của tôi. Đây là mã khách hàng của tôi đưa ra một ngoại lệ cho biết Mã thông báo xác thực được yêu cầu. Tôi có mã thông báo nhưng không biết cách sử dụng mã thông báo đó để được xác thực để sử dụng dịch vụ. Mã tương tự này chạy tốt cho các dịch vụ được chia sẻ dưới dạng 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);

Bạn có muốn thiết lập thông tin đăng nhập người dùng hoặc đăng nhập ứng dụng cho ứng dụng của mình không? Ngoài ra, ứng dụng của bạn có sử dụng API dựa trên OAuth 2 không? Liên kết thảo luận: resource.arcgis.com/en/help/arcgis-rest-api/index.html#//
Đổi

Tôi không sử dụng api dựa trên OAuth 2 để xác thực. Tôi chỉ đơn giản là tạo mã thông báo bằng truy vấn GenerateToken bằng cách chuyển thông tin đăng nhập của người dùng. Sau khi đăng nhập, tôi đã xuất bản một dịch vụ trên Arcgis.com và chia sẻ điều đó với một nhóm. Vì dịch vụ không được chia sẻ dưới dạng Công khai, nên khi tôi hoặc nhóm mà dịch vụ được chia sẻ, cố gắng sử dụng dịch vụ này, sẽ xuất hiện lỗi "Yêu cầu mã thông báo xác thực". Tôi có mã thông báo nhưng tôi không biết làm cách nào tôi có thể sử dụng mã thông báo đó để sử dụng thành công dịch vụ bảo mật.
WAQ

Điều này đã được đăng chéo dưới dạng bản sao trực tiếp từ stackoverflow.com/questions/26429713/, nhưng đã có một tiền thưởng được thêm vào trên cả hai trang web
PolyGeo

@PolyGeo Tôi đã đăng bản sao của cùng một câu hỏi ở hai nơi vì tôi cần trả lời khẩn cấp. Là vi phạm một số quy tắc hoặc những gì?
WAQ

Chính sách đăng bài chéo lên nhiều trang SO / SE đã được thảo luận tại meta.stackexchange.com/questions/64068/ nam Tuy nhiên, bằng cách đặt tiền thưởng cho cùng một câu hỏi tại cả hai trang web, tôi hiểu rằng chúng không thể bị đóng một trong hai trang web ( meta.stackexchange.com/questions/14591/ mài ). Tuy nhiên, bằng cách làm cho những người trả lời tiềm năng từ cả hai trang web nhận thức được câu hỏi và trả lời khác, điều đó có thể dẫn đến sự hiệp lực và một giải pháp nhanh hơn.
PolyGeo

Câu trả lời:


3

Tôi đã cố gắng thêm mã thông báo với layerUrl, nhưng không gặp may. Tôi đã sử dụng ứng dụng Fiddler để xem các url đang được tạo bởi API hoặc mạng, nhưng tôi không thấy chỉ http://services1.arcgis.com/cFi1BRRsYB2fYqCl/arcgis/rest/services/NameService/FeatureServerđược gửi qua mạng ngay cả sau khi gắn thêm mã thông báo với layerUrl.
WAQ

Trên AGOL, trong phần nội dung của tôi, nhấp vào "Mở trong ArcGIS cho máy tính để bàn" và bắt đầu tải xuống tệp item.pitem. Trong tệp này, bạn có thể tìm thấy url của lớp tính năng. Thêm "? Token = <yourtoken> & f = json" vào url và mở nó trong trình duyệt. Hãy cho tôi biết những gì đang xảy ra.
lele3p

Tôi có Url của lớp đó "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServervà tôi cũng có mã thông báo được tạo. giả sử mã thông báo là abc112asdfkljznxc123123lkjkj23kljurl hoàn chỉnh giống như vậy "http://services2.arcgis.com/js0B5yfJ0ZQG/arcgis/rest/services/TxsUltural/FeatureServer?token=abc112asdfkljznxc123123lkdfkj23klj"Và tôi cũng đã thử với các lớp con riêng lẻ url:"http://services2.arcgis.com/js0BC5yf1J0Z4Q5G/arcgis/rest/services/texas_cultural/FeatureServer/1?token=abc112asdfkljznxc123123lkjadfkj23klj"nhưng không may mắn
WAQ

Tôi có thể xem lớp trong trình duyệt bằng cách sử dụng url và mã thông báo ở trên. Chỉ là tôi đang bị Token Authentication requiredngoại lệ khi tôi sử dụng nó trong mã được đăng trong Câu hỏi ban đầu :)
WAQ

tổng số cú đâm trong bóng tối - liệu Bộ tài sản có tài sản TOKEN không có giấy tờ không?
MC5

1

Vui lòng tham khảo liên kết dưới đây, dường như bạn có một số vấn đề proxy. Để truy cập một dịch vụ bảo mật, bạn cần có tên người dùng và mật khẩu và chỉ cần viết mã nơi mã thông báo được tạo trong thời gian chạy và bạn chỉ cần nối thêm nó đúng cách

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


Tôi có tên người dùng, mật khẩu và đã tạo mã thông báo bằng generateTokentruy vấn. Chỉ không thể truy xuất các dịch vụ an toàn mà tôi đã xuất bản.
WAQ

1

Bài viết ví dụ này từ diễn đàn GeoNet dựa trên javascript, nhưng về cơ bản nó hoàn thành những gì bạn muốn xảy ra.

Tuy nhiên, đối với trường hợp API 'ArcObjects cho .Net' của ESRI (mà chúng tôi có thể cho bạn biết đang sử dụng dựa trên Không gian tên), bạn nên triển khai phương thức IArcGISSingleSignon.GetToken. Phương thức của đối tượng này sẽ đăng nhập người dùng vào ArcGIS Online (AGOL) và trả lại mã thông báo. Nhà máy không gian làm việc và các định nghĩa đối tượng featureclass không yêu cầu mã thông báo, nhưng phải đăng nhập trước khi truy cập các dịch vụ tính năng AGOL được bảo mật.

Cuối cùng, giống như một điểm API, IWorkspaceFactory đã lỗi thời và IWorkspaceFactory2 hiện là đối tượng giao diện ưa thích .-- các chữ ký không thay đổi nhưng việc triển khai phụ trợ đã làm.

Vui lòng đăng bài để xác nhận bổ trợ C # của bạn kết nối chính xác với AGOL sau khi bạn triển khai mã thông báo đăng nhập một lần bằng phương thức GetToken.


Tôi đã thử `IArcGISSingleSignOn.GetToken 'và nhận được mã thông báo được tạo sau khi nhập thông tin đăng nhập của tôi vào hộp thoại đăng nhập xuất hiện. Sau đó đã thực thi cùng một mã như trong câu hỏi, nhưng vẫn nhận được cùng một ngoại lệ "Yêu cầu mã thông báo xác thực".
WAQ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.