PageRenderTime 246ms CodeModel.GetById 25ms RepoModel.GetById 2ms app.codeStats 0ms

/Auth/Auth.cs

http://github.com/burkeholland/InstaSharp
C# | 57 lines | 45 code | 12 blank | 0 comment | 1 complexity | c4bdee288f795fa1a973adbd83019c49 MD5 | raw file
Possible License(s): Apache-2.0
  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. }