/Auth/Auth.cs

http://github.com/burkeholland/InstaSharp · C# · 57 lines · 45 code · 12 blank · 0 comment · 1 complexity · c4bdee288f795fa1a973adbd83019c49 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Web;
  6. using System.Web.Script.Serialization;
  7. namespace InstaSharp {
  8. public class Auth {
  9. InstagramConfig _config;
  10. JavaScriptSerializer _serializer;
  11. public enum Scope {
  12. basic,
  13. comments,
  14. relationships,
  15. likes
  16. }
  17. public Auth(InstagramConfig config) {
  18. _config = config;
  19. }
  20. public static string AuthLink(string instagramOAuthURI, string clientId, string callbackURI, List<Scope> scopes) {
  21. StringBuilder scope = new StringBuilder();
  22. scopes.ForEach(s => {
  23. if (scope.Length > 0) scope.Append("+");
  24. scope.Append(s);
  25. });
  26. return string.Format("{0}/authorize/?client_id={1}&redirect_uri={2}&response_type=code&scope={3}", new object[] {
  27. instagramOAuthURI,
  28. clientId,
  29. callbackURI,
  30. scope.ToString()
  31. });
  32. }
  33. public AuthInfo RequestToken(string code) {
  34. _serializer = new JavaScriptSerializer();
  35. var parameters = new Dictionary<string, string>();
  36. parameters.Add("client_id", _config.ClientId);
  37. parameters.Add("client_secret", _config.ClientSecret);
  38. parameters.Add("grant_type", "authorization_code");
  39. parameters.Add("redirect_uri", _config.RedirectURI);
  40. parameters.Add("code", code);
  41. var result = HttpClient.POST(_config.OAuthURI + "/access_token", parameters);
  42. return (AuthInfo)_serializer.Deserialize<AuthInfo>(result);
  43. }
  44. }
  45. }