I would like to run a python script to access and update a table that is part of a feature service in AGOL.
I am successful in retrieving a token but I am having a hard time finding any documentation on how to use that token to access the data in AGOL.
The examples that I have seen only use a username/password combination to access data. This does not work to access an endpoint to a specific layer.
Any help or an example would be much appreciated. I am essentially lost at line 21...
<SPAN class="keyword token">from</SPAN> arcgis<SPAN class="punctuation token">.</SPAN>gis <SPAN class="keyword token">import</SPAN> GIS
<SPAN class="keyword token">import</SPAN> requests
<SPAN class="keyword token">from</SPAN> arcgis<SPAN class="punctuation token">.</SPAN>features <SPAN class="keyword token">import</SPAN> FeatureLayerCollection
client_id <SPAN class="operator token">=</SPAN> <SPAN class="string token">"My App ID from AGOL"</SPAN>
client_secret <SPAN class="operator token">=</SPAN> <SPAN class="string token">"My Client Secret from App in AGOL"</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">get_token</SPAN><SPAN class="punctuation token">(</SPAN>client_id<SPAN class="punctuation token">,</SPAN> client_secret<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
params <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">'client_id'</SPAN><SPAN class="punctuation token">:</SPAN> client_id<SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'client_secret'</SPAN><SPAN class="punctuation token">:</SPAN> client_secret<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>
request <SPAN class="operator token">=</SPAN> requests<SPAN class="punctuation token">.</SPAN>get<SPAN class="punctuation token">(</SPAN><SPAN class="string token"><SPAN>'</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fwww.arcgis.com%2Fsharing%2Foauth2%2Ftoken" target="_blank">https://www.arcgis.com/sharing/oauth2/token</A><SPAN>'</SPAN></SPAN><SPAN class="punctuation token">,</SPAN> params<SPAN class="operator token">=</SPAN>params<SPAN class="punctuation token">)</SPAN>
response <SPAN class="operator token">=</SPAN> request<SPAN class="punctuation token">.</SPAN>json<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
token <SPAN class="operator token">=</SPAN> response<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"access_token"</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">return</SPAN> token
token <SPAN class="operator token">=</SPAN> get_token<SPAN class="punctuation token">(</SPAN>client_id<SPAN class="punctuation token">,</SPAN> client_secret<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>token<SPAN class="punctuation token">)</SPAN>
token_params <SPAN class="operator 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> token
<SPAN class="punctuation token">}</SPAN>
service_url <SPAN class="operator token">=</SPAN> <SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fservices2.arcgis.com%2FFFD8998dfadf024%2Farcgis%2Frest%2Fservices%2FWaterBoxTesting%2FFeatureServer%2F1" target="_blank">https://services2.arcgis.com/FFD8998dfadf024/arcgis/rest/services/WaterBoxTesting/FeatureServer/1</A><SPAN>"</SPAN></SPAN>
<SPAN class="comment token">#data = requests.post(service_url, params=token_params)</SPAN>
<SPAN class="comment token">#print(data.json())</SPAN>
gis <SPAN class="operator token">=</SPAN> GIS<SPAN class="punctuation token">(</SPAN>service_url <SPAN class="operator token">+</SPAN> token<SPAN class="punctuation token">)</SPAN>
lyr_result <SPAN class="operator token">=</SPAN> gis<SPAN class="punctuation token">.</SPAN>content<SPAN class="punctuation token">.</SPAN>search<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'title:StormGateInfo'</SPAN><SPAN class="punctuation token">)</SPAN>
lyr_result<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</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></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Thanks,
James