Shopify.OAuth
is published on Hex.
Add it to your list of dependencies in mix.exs
;
defp deps do
{ :shopify_oauth, "~> 1.0" }
end
Shopify.OAuth
requires you to provide an HTTP client and a JSON codec.
hackney
and jason
are used by default. If you wish to use these defaults you
will need to specify hackney
and jason
as dependencies as well.
{:ok, response} =
%{client_id: "49f754092e83a76bf4e49ab6feb3f8b9", client_secret: "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", code: "f5be881c575fedf9491d26aff123ace7"}
|> Shopify.OAuth.create_access_token()
|> Shopify.OAuth.request(%{shop: "some-shop"})
Shopify.OAuth
provides verify_hmac/2
and verify_hmac/3
functions for
verifying HMAC signatures returned by the Shopify API.
Please see the Shopify Authentication with OAuth documentation for the technical details regarding HMAC verification.
verify_hmac/2
query = "code=0907a61c0c8d55e99db179b68161bc00&hmac=700e2dadb827fcc8609e9d5ce208b2e9cdaab9df07390d2cbca10d7c328fc4bf&shop=some-shop.myshopify.com&state=0.6784241404160823×tamp=1337178173"
shared_secret = "hush"
{:ok, hmac} = Shopify.OAuth.verify_hmac(query, shared_secret)
verify_hmac/3
hmac = "700e2dadb827fcc8609e9d5ce208b2e9cdaab9df07390d2cbca10d7c328fc4bf"
message = "code=0907a61c0c8d55e99db179b68161bc00&shop=some-shop.myshopify.com×tamp=1337178173"
shared_secret = "hush"
{:ok, hmac} = Shopify.OAuth.verify_hmac(hmac, message, shared_secret)
Configuration is passed as a map to the second argument of
Shopify.OAuth.request/2
.
:host
- HTTP host to make requests to. Defaults tomyshopify.com
.:http_client
- the HTTP client used for making requests. Defaults toShopify.OAuth.Client.Hackney
.:http_client_opts
- additional options passed to:http_client
. Defaults to[]
.:json_codec
- codec for encoding and decoding JSON payloads. Defaults toJason
.:path
- path to prefix on each request. Defaults to/admin
.:port
- the HTTP port used when making a request:protocol
- the HTTP protocol used when making a request. Defaults tohttps
.:retry
- whether to automatically retry failed API calls. May betrue
orfalse
. Defaults tofalse
.:retry_opts
- options used when performing retries. Defaults to[]
.:max_attempts
- the maximum number of retry attempts. Defaults to3
.
:shop
- subdomain of the shop that a request is to be made to