/// <summary> /// Authorizes an application installation, generating an access token for the given shop. /// </summary> /// <param name="code">The authorization code generated by Shopify, which should be a parameter named 'code' on the request querystring.</param> /// <param name="myShopifyUrl">The store's *.myshopify.com URL, which should be a paramter named 'shop' on the request querystring.</param> /// <param name="shopifyApiKey">Your app's public API key.</param> /// <param name="shopifySecretKey">Your app's secret key.</param> /// <returns>The authorization result.</returns> public static async Task <AuthorizationResult> AuthorizeWithResult(string code, string myShopifyUrl, string shopifyApiKey, string shopifySecretKey) { var ub = new UriBuilder(ShopifyService.BuildShopUri(myShopifyUrl, false)) { Path = "admin/oauth/access_token" }; var content = new JsonContent(new { client_id = shopifyApiKey, client_secret = shopifySecretKey, code, }); using (var client = new HttpClient()) using (var msg = new CloneableRequestMessage(ub.Uri, HttpMethod.Post, content)) { var request = client.SendAsync(msg); var response = await request; var rawDataString = await response.Content.ReadAsStringAsync(); ShopifyService.CheckResponseExceptions(response, rawDataString); var json = JToken.Parse(rawDataString); return(new AuthorizationResult(json.Value <string>("access_token"), json.Value <string>("scope").Split(','))); } }
/// <summary> /// Authorizes an application installation, generating an access token for the given shop. /// </summary> /// <param name="code">The authorization code generated by Shopify, which should be a parameter named 'code' on the request querystring.</param> /// <param name="myShopifyUrl">The store's *.myshopify.com URL, which should be a paramter named 'shop' on the request querystring.</param> /// <param name="shopifyApiKey">Your app's public API key.</param> /// <param name="shopifySecretKey">Your app's secret key.</param> /// <returns>The shop access token.</returns> public static async Task <string> Authorize(string code, string myShopifyUrl, string shopifyApiKey, string shopifySecretKey) { var shopUri = ShopifyService.BuildShopUri(myShopifyUrl); using (var client = Flurl.Url.Combine(shopUri.ToString(), "oauth/access_token").AllowAnyHttpStatus()) { var request = client.PostAsync(new JsonContent(new { client_id = shopifyApiKey, client_secret = shopifySecretKey, code, })); var response = await request; var rawDataString = await request.ReceiveString(); ShopifyService.CheckResponseExceptions(response, rawDataString); var json = JToken.Parse(rawDataString); return(json.Value <string>("access_token")); } }