Get token from Esri Online to access secure service

2319
2
Jump to solution
01-27-2016 08:30 AM
JimBridge
Occasional Contributor

I'm having trouble retriving a token to access a secure service online. I'm using a developer account. When I run it against a local install of ArcGIS Server it works fine  I'm not 100% sure what the tokenurl would be and if the userid /password would just be the login I have for my developer site.

Thanks

Jim

I'm using code similar to the following to retrive the token:

public Dictionary<string, string> GetToken(string username, string password, string tokenUrl)

Dictionary<string, string> dictionary = new Dictionary<string, string>();

MapTalk mt = new MapTalk();

var myToken = "";

if (tokenUrl != "")

//#######################


var data = new NameValueCollection();

"username"] = username;

"password"] = password;

"expires"] = "1";

"f"] = "json";

JavaScriptSerializer jserialize = new JavaScriptSerializer();

TokenInfo x = jserialize.Deserialize<TokenInfo>(_getResponse(data, tokenUrl));

var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

var expire = epoch.AddMilliseconds(x.expires).ToLocalTime();

"token", myToken);

"expire",expire.ToString());

return dictionary;

else


"token","");

return dictionary;

public class TokenInfo


public string token { get; set; }

public long expires { get; set; }

public bool ssl { get; set; }

private string _getResponse(NameValueCollection data, string url)

string responseData;

var webClient = new WebClient();

var response = webClient.UploadValues(url, data);

Encoding.UTF8.GetString(response);

return responseData;

0 Kudos
1 Solution

Accepted Solutions
nicogis
MVP Frequent Contributor
class AGOL
{
 private string _token;
 private string _username;
 private string _password;
 public string Token
 {
  get
  {
   return _token;
  }
 }
 public string Username
 {
  get
  {
   return _username;
  }
  set
  {
   _username = value;
  }
 }
 public string Password
 {
  get
  {
   return _password;
  }
  set
  {
   _password = value;
  }
 }
 public AGOL(string UserName, string PassWord)
 {
  _username = UserName;
  _password = PassWord;
  _token = GetToken(UserName, PassWord);
  
 }

 public string GetToken(string username, string password)
 {
  var data = new NameValueCollection();
  data["username"] = Username;
  data["password"] = Password;
  data["referer"] = "https://www.arcgis.com";
  data["f"] = "json";
  TokenInfo x = JsonConvert.DeserializeObject<TokenInfo>(_getResponse(data, "https://arcgis.com/sharing/rest/generateToken"));
  return x.token; ;
 }

 private string _getResponse(NameValueCollection data, string url)
 {
  string responseData;
  var webClient = new WebClient();
  var response = webClient.UploadValues(url, data);
  responseData = System.Text.Encoding.UTF8.GetString(response);
  return responseData;
 }
 public class TokenInfo
 {
  public string token { get; set; }
  public long expires { get; set; }
  public bool ssl { get; set; }
 }

}

View solution in original post

0 Kudos
2 Replies
nicogis
MVP Frequent Contributor
class AGOL
{
 private string _token;
 private string _username;
 private string _password;
 public string Token
 {
  get
  {
   return _token;
  }
 }
 public string Username
 {
  get
  {
   return _username;
  }
  set
  {
   _username = value;
  }
 }
 public string Password
 {
  get
  {
   return _password;
  }
  set
  {
   _password = value;
  }
 }
 public AGOL(string UserName, string PassWord)
 {
  _username = UserName;
  _password = PassWord;
  _token = GetToken(UserName, PassWord);
  
 }

 public string GetToken(string username, string password)
 {
  var data = new NameValueCollection();
  data["username"] = Username;
  data["password"] = Password;
  data["referer"] = "https://www.arcgis.com";
  data["f"] = "json";
  TokenInfo x = JsonConvert.DeserializeObject<TokenInfo>(_getResponse(data, "https://arcgis.com/sharing/rest/generateToken"));
  return x.token; ;
 }

 private string _getResponse(NameValueCollection data, string url)
 {
  string responseData;
  var webClient = new WebClient();
  var response = webClient.UploadValues(url, data);
  responseData = System.Text.Encoding.UTF8.GetString(response);
  return responseData;
 }
 public class TokenInfo
 {
  public string token { get; set; }
  public long expires { get; set; }
  public bool ssl { get; set; }
 }

}
0 Kudos
JimBridge
Occasional Contributor

Thank you

0 Kudos