可以通过arcgis-pro:// URI将参数传递给外接程序吗?

174
5
12-08-2022上午12:36
MikeDavlantes
通过
新贡献者III
AGOL/Portal OAuth窗口使用类似这样的URI将你重定向回Pro: arcgis-pro: / /认证/ 4428 /
有没有办法在ArcGIS Pro外接程序中使用类似的URI来处理自定义操作?
我试图解决两个相邻的用例:
  1. 通过web服务进行外接程序身份验证几乎与AGOL的方式完全相同:单击外接程序上的按钮,打开浏览器窗口,输入您的凭据,然后使用外接程序可以访问的认证令牌重定向回Pro。
  2. 通过URI方案在用户之间共享自定义场景。例如,您以特定的方式配置了外接程序,并且它有一个打开的项。你要把这个场景发给我让我回顾一下。你给我一个这样的URI, Pro把这个数据传递给我的加载宏:arcgis-pro: / / custom_add_in_name / ?< scenario_data_goes_here >
标签(3)
0荣誉
5回复
GintautasKmieliauskas
定期贡献者II

你好,

对于第一种情况,我使用如下代码中的场景:

var psi = new ProcessStartInfo {FileName = loginUrl, UseShellExecute = true};//打开浏览器。Process proc = Process. start (psi);if (proc != null){//等待登录逻辑使用HttpListenerContext ....//获取token逻辑使用HttpPost ....}

等待登录或获取令牌是系统相关的任务。所以我建议在这些任务中只使用c#类。

0荣誉
MikeDavlantes
通过
新贡献者III

谢谢!这是一个系统的问题,而不是Arc的问题。我认为这可能会解决用例1。

0荣誉
狼
通过 金宝搏吧
金宝搏吧

或者你可以使用ArcGIS Pro的“内置”功能来创建到门户的连接,然后使用ArcGISPortal类来获得一个令牌:ArcGISPortal类

你也可以使用EsriHttpClient类- arcgis Pro对于你的rest类型调用,你不需要担心令牌(过期等)

0荣誉
MikeDavlantes
通过
新贡献者III

不幸的是,我没有连接到传送门或AGOL,我只使用那些作为例子,我希望如何得到OAuth与我的外接程序工作。我将连接到我们的第三方服务器,并通过那里运行认证。

0荣誉
狼
通过 金宝搏吧
金宝搏吧

在2017年的DevSummit上,Esri的一位产品工程师(Tushar,他已经不在Esri工作了)做了一个样例,基本上就是你在用例1中尝试做的事情。从视频的第37分钟开始:ArcGIS Pro SDK for .NET:与ArcGIS在线集成- Esri视频:GIS,事件,ArcGIS产品…

我附上了演示源代码供您参考。请注意,该代码是针对ArcGIS Pro 1.4的,大约有5年的历史。但是,它可能会为您提供一些关于如何使用EsriHttpClient来完成任务的提示。