We are currently evaluating the pros and cons of ArcGIS Online vs. ArcGIS Enterprise. Part of that evaluation involves determining the differences in implementing our automation toolsets. These are written in Python and consume ArcGIS via the REST API. In both ArcGIS Online and ArcGIS Enterprise we are serving a hosted feature service and an app (with its ClientID and ClientSecret). Both are shared with a group.
For all intents and purposes, both the AGOL and the AGEnt implementation patterns are identical.
Running with same code returns different results: An access token is obtained using the ClientID/ClientSecret. Using that access token to query the feature service returns the desired JSON payload when consuming from AGOL (i.e., features and geometries). Using the access token to query the feature service when consuming from AGEnt returns a code 498, Invalid token.
Why is this happening to me? Below is the executed Python
TIA
query_string <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">"client_id"</SPAN><SPAN class="punctuation token">:</SPAN>appID<SPAN class="punctuation token">,</SPAN><SPAN class="string token">"client_secret"</SPAN><SPAN class="punctuation token">:</SPAN>appSecret<SPAN class="punctuation token">,</SPAN><SPAN class="string token">"grant_type"</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="string token">"client_credentials"</SPAN><SPAN class="punctuation token">}</SPAN>
<SPAN class="comment token"># get an access token </SPAN>
response00 <SPAN class="operator token">=</SPAN> requests<SPAN class="punctuation token">.</SPAN>post<SPAN class="punctuation token">(</SPAN>tokenUrl<SPAN class="punctuation token">,</SPAN> params<SPAN class="operator token">=</SPAN>query_string<SPAN class="punctuation token">)</SPAN>
access_token <SPAN class="operator token">=</SPAN> response00<SPAN class="punctuation token">.</SPAN>json<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"access_token"</SPAN><SPAN class="punctuation token">]</SPAN>
where <SPAN class="operator token">=</SPAN> <SPAN class="string token">"1=1"</SPAN> <SPAN class="comment token"># MAGIC where clause</SPAN>
params <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">"where"</SPAN><SPAN class="punctuation token">:</SPAN> where<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"outFields"</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"*"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"f"</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">"json"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'token'</SPAN><SPAN class="punctuation token">:</SPAN> access_token<SPAN class="punctuation token">}</SPAN>
response01 <SPAN class="operator token">=</SPAN> requests<SPAN class="punctuation token">.</SPAN>post<SPAN class="punctuation token">(</SPAN>url <SPAN class="operator token">=</SPAN> featureServiceQueryUrl<SPAN class="punctuation token">,</SPAN> params <SPAN class="operator token">=</SPAN> params<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># extracting data in json format</SPAN>
data01 <SPAN class="operator token">=</SPAN> response01<SPAN class="punctuation token">.</SPAN>json<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
fields <SPAN class="operator token">=</SPAN> data01<SPAN class="punctuation token">.</SPAN>get<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'fields'</SPAN><SPAN class="punctuation token">)</SPAN>
features <SPAN class="operator token">=</SPAN> data01<SPAN class="punctuation token">.</SPAN>get<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'features'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>