<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Legend problems with secured services when migrating to 3.0/3.1 in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271700#M25041</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Here's the pertinent parts of function that adds a dynamic layer. Same concept for feature layers.&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;var url;
if (l.token == true) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; url = l.url + '?token=' + config.token
} else {
&amp;nbsp;&amp;nbsp;&amp;nbsp; url = l.url
}
var layer = new esri.layers.ArcGISDynamicMapServiceLayer(url, {
&amp;nbsp;&amp;nbsp;&amp;nbsp; id: l.id,
&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: l.visible,
&amp;nbsp;&amp;nbsp;&amp;nbsp; opacity: l.opacity
});
layer.setImageFormat(l.imageFormat);
layer.setDPI(l.dpi);

if (l.legend == true) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; app.mapParams.legendLayers.push({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer: layer,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: l.name
&amp;nbsp;&amp;nbsp;&amp;nbsp; })
}
app.map.addLayer(layer);&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;As you can see I'm manually appending the token. When the page loads the first javascript file is php that returns "var token = THE_TOKEN;" based on the referrer or I include the token in my config object as above. It's a little archaic, but that's how I've done it since the beginning. I can see where this going; probably time to get acquainted with IdentityManagerBase.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;yes, however in the short term,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;on your &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;if (l.token == true) {&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;you could just change it to check and see if a token is already in the url.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;since there is no indexof for string in dojo (grr)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;function oc(a){
 var o = {};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(var i=0;i&amp;lt;a.length;i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o[a&lt;I&gt;]='';
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return o;
}&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if (l.token == true &amp;amp;&amp;amp; "token=" in oc(l.url))&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 13:16:18 GMT</pubDate>
    <dc:creator>JeffPace</dc:creator>
    <dc:date>2021-12-11T13:16:18Z</dc:date>
    <item>
      <title>Legend problems with secured services when migrating to 3.0/3.1</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271697#M25038</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I add dynamic and feature layers when the application loads by iterating through an object literal like such:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;var config = { &amp;nbsp;&amp;nbsp;&amp;nbsp; token: SOME_TOKEN, &amp;nbsp;&amp;nbsp;&amp;nbsp; layers: [ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: 'dynamic', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: 'http://MY_URL/ArcGIS/rest/services/Slope/MapServer', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; token: true, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name: 'Slope', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: 'slope', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: false, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opacity: 0.5, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageFormat: 'png32', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dpi: 96, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend: true, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parcelLabelControl: false, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subLayerControl: false, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info: true, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; infoHtml: 'This layer displays slopes.' &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: 'feature', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: 'http://MY_URL/ArcGIS/rest/services/Fire_Hydrants/MapServer/0', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; token: true, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name: 'Fire Hydrants', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: 'firehydrants', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: false, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opacity: 1, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageFormat: 'png32', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dpi: 96, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend: true, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itTitle: 'Fire Hydrant', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itContentType: 'function', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itContentText: '', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itContentFunction: 'config.featureFunctions.hydrants.infoTemplate' &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; ] }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;SPAN&gt;If a token is required it's added to the url when the layer object is created. Layers are pushed to the legend when legend is set to true. Through 2.8 this worked fine, but not in 3.0+. I did some digging and discovered that in 2.8 the legend widget makes calls to the map service's legend REST like so:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;http://MY_URL/ArcGIS/rest/services/Slope/MapServer/legend?token=SOME_TOKEN&amp;amp;f=json&amp;amp;callback=dojo.io.script.jsonp_dojoIoScript23._jsonpCallback&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;In 3.0+ the call is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;http://MY_URL/ArcGIS/rest/services/Slope/MapServer/legend?token=SOME_TOKEN?token=SOME_TOKEN&amp;amp;f=json&amp;amp;callback=dojo.io.script.jsonp_dojoIoScript23._jsonpCallback&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;Notice the token query string is represented twice with two ?. AGS returns a 'invalid token' error. Seems to me there's an error forming the url for the legend REST call. Perhaps getting the service's base url from &lt;/SPAN&gt;&lt;STRONG&gt;SOME_LAYER.url&lt;/STRONG&gt;&lt;SPAN&gt; instead of &lt;/SPAN&gt;&lt;STRONG&gt;SOME_LAYER._url.path&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help would be appreciated as this is a roadblock as I migrate to 3.0+. Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 24 Aug 2012 11:41:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271697#M25038</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2012-08-24T11:41:43Z</dc:date>
    </item>
    <item>
      <title>Re: Legend problems with secured services when migrating to 3.0/3.1</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271698#M25039</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Can you post your legend creation code? Are you manually appending the token?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 24 Aug 2012 13:13:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271698#M25039</guid>
      <dc:creator>JeffPace</dc:creator>
      <dc:date>2012-08-24T13:13:55Z</dc:date>
    </item>
    <item>
      <title>Re: Legend problems with secured services when migrating to 3.0/3.1</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271699#M25040</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Here's the pertinent parts of function that adds a dynamic layer. Same concept for feature layers.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;var url;
if (l.token == true) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; url = l.url + '?token=' + config.token
} else {
&amp;nbsp;&amp;nbsp;&amp;nbsp; url = l.url
}
var layer = new esri.layers.ArcGISDynamicMapServiceLayer(url, {
&amp;nbsp;&amp;nbsp;&amp;nbsp; id: l.id,
&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: l.visible,
&amp;nbsp;&amp;nbsp;&amp;nbsp; opacity: l.opacity
});
layer.setImageFormat(l.imageFormat);
layer.setDPI(l.dpi);

if (l.legend == true) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; app.mapParams.legendLayers.push({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer: layer,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: l.name
&amp;nbsp;&amp;nbsp;&amp;nbsp; })
}
app.map.addLayer(layer);&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As you can see I'm manually appending the token. When the page loads the first javascript file is php that returns "var token = THE_TOKEN;" based on the referrer or I include the token in my config object as above. It's a little archaic, but that's how I've done it since the beginning. I can see where this going; probably time to get acquainted with IdentityManagerBase.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 13:16:16 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271699#M25040</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2021-12-11T13:16:16Z</dc:date>
    </item>
    <item>
      <title>Re: Legend problems with secured services when migrating to 3.0/3.1</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271700#M25041</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Here's the pertinent parts of function that adds a dynamic layer. Same concept for feature layers.&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;var url;
if (l.token == true) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; url = l.url + '?token=' + config.token
} else {
&amp;nbsp;&amp;nbsp;&amp;nbsp; url = l.url
}
var layer = new esri.layers.ArcGISDynamicMapServiceLayer(url, {
&amp;nbsp;&amp;nbsp;&amp;nbsp; id: l.id,
&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: l.visible,
&amp;nbsp;&amp;nbsp;&amp;nbsp; opacity: l.opacity
});
layer.setImageFormat(l.imageFormat);
layer.setDPI(l.dpi);

if (l.legend == true) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; app.mapParams.legendLayers.push({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer: layer,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: l.name
&amp;nbsp;&amp;nbsp;&amp;nbsp; })
}
app.map.addLayer(layer);&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;As you can see I'm manually appending the token. When the page loads the first javascript file is php that returns "var token = THE_TOKEN;" based on the referrer or I include the token in my config object as above. It's a little archaic, but that's how I've done it since the beginning. I can see where this going; probably time to get acquainted with IdentityManagerBase.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;yes, however in the short term,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;on your &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;if (l.token == true) {&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;you could just change it to check and see if a token is already in the url.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;since there is no indexof for string in dojo (grr)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;function oc(a){
 var o = {};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(var i=0;i&amp;lt;a.length;i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o[a&lt;I&gt;]='';
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return o;
}&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if (l.token == true &amp;amp;&amp;amp; "token=" in oc(l.url))&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 13:16:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271700#M25041</guid>
      <dc:creator>JeffPace</dc:creator>
      <dc:date>2021-12-11T13:16:18Z</dc:date>
    </item>
    <item>
      <title>Re: Legend problems with secured services when migrating to 3.0/3.1</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271701#M25042</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I figured it out. When adding a dynamic layer to the legend the code in 2.8 doesn't check to see if the &lt;/SPAN&gt;&lt;STRONG&gt;LAYER.url&lt;/STRONG&gt;&lt;SPAN&gt; string has a token, nor does it run &lt;/SPAN&gt;&lt;STRONG&gt;LAYER._getToken()&lt;/STRONG&gt;&lt;SPAN&gt;. It assumes that if it is a valid secured service a token will be present. In 3.0 a small change was made, which runs &lt;/SPAN&gt;&lt;STRONG&gt;LAYER._getToken()&lt;/STRONG&gt;&lt;SPAN&gt; and if it returns true it adds a token querystring to the url. The problem is, it doesn't check to see if a token querystring is already present in the url and adds another regardless. The result is a failed request. This was a small oversight on the recode. This could easily be fixed in a local API install, but the JSAPI Team needs to look at this. I assume they look through the forum for this kind of thing. I'll repost for them if they don't acknowledge this in a day or two. Thanks in advance guys. Keep up the good work! Thanks for your input too Jeff.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's v2.8&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;_legendRequestServer: function(_27) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var url = _27.url;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var pos = url.indexOf("?");
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pos &amp;gt; -1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = url.substring(0, pos) + "/legend" + url.substring(pos);
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url += "/legend";
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; var _28 = _4.hitch(this, "_processLegendResponse");
&amp;nbsp;&amp;nbsp;&amp;nbsp; var _29 = {};
&amp;nbsp;&amp;nbsp;&amp;nbsp; _29.f = "json";
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_27._params.dynamicLayers) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _29.dynamicLayers = _27._params.dynamicLayers;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_29.dynamicLayers === "[{}]") {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _29.dynamicLayers = "[]";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; var _2a = esri.request({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: url,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; content: _29,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; callbackParamName: "callback",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; load: function(_2b, _2c) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _28(_27, _2b, _2c);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error: esriConfig.defaults.io.errorHandler
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; return _2a;
}&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and 3.0+&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;_legendRequestServer: function(_24) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var url = _24.url;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var pos = url.indexOf("?");
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pos &amp;gt; -1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = url.substring(0, pos) + "/legend" + url.substring(pos);
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url += "/legend";
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; var _25 = _24._getToken();
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_25) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url += "?token=" + _25;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; var _26 = _2.hitch(this, "_processLegendResponse");
&amp;nbsp;&amp;nbsp;&amp;nbsp; var _27 = {};
&amp;nbsp;&amp;nbsp;&amp;nbsp; _27.f = "json";
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_24._params.dynamicLayers) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _27.dynamicLayers = _24._params.dynamicLayers;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_27.dynamicLayers === "[{}]") {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _27.dynamicLayers = "[]";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; var _28 = esri.request({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: url,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; content: _27,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; callbackParamName: "callback",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; load: function(_29, _2a) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _26(_24, _29, _2a);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error: esriConfig.defaults.io.errorHandler
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; return _28;
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 13:16:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271701#M25042</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2021-12-11T13:16:21Z</dc:date>
    </item>
    <item>
      <title>Here's the work around</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271702#M25043</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE class="plain" name="code"&gt;app.map.addLayer(layer);&amp;nbsp; layer.url = l.url;&amp;nbsp; if (l.legend == true) { &amp;nbsp;&amp;nbsp;&amp;nbsp; app.mapParams.legendLayers.push({ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer: layer, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: l.name &amp;nbsp;&amp;nbsp;&amp;nbsp; }) }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I add the layer to the map; then set the &lt;/SPAN&gt;&lt;STRONG&gt;LAYER.url&lt;/STRONG&gt;&lt;SPAN&gt; string back to the token free url; finally push the layer to the legend. This doesn't affect the layer's ability to retrieve images for the map because those request urls use the &lt;/SPAN&gt;&lt;STRONG&gt;LAYER._getToken()&lt;/STRONG&gt;&lt;SPAN&gt; function to add the token as a content pair for future requests.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 24 Aug 2012 17:38:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271702#M25043</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2012-08-24T17:38:00Z</dc:date>
    </item>
    <item>
      <title>Re: Legend problems with secured services when migrating to 3.0/3.1</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271703#M25044</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ben, your solution works partially.&lt;/P&gt;&lt;P&gt;I remove the token from the layer url after I've added the layers to the map.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;this.map.addLayers(layers);
array.forEach(layers, function (l) {
 &amp;nbsp;&amp;nbsp;&amp;nbsp;l.url = l.url.split('?token')[0];
 }, this);&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The layer gets added to the map and loads image request succesfully. The legend also works fine, but identifying on a layers fails. The identify request doesn't contain a token anymore after I removed the token from the layer.url. It seems that an identify request doesn't add the token as a legend request does.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you have a solution for this as well?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Joep Ronde&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 13:16:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legend-problems-with-secured-services-when/m-p/271703#M25044</guid>
      <dc:creator>JoepRonde</dc:creator>
      <dc:date>2021-12-11T13:16:24Z</dc:date>
    </item>
  </channel>
</rss>

