diff --git a/sec/com/dropboxapi.hoon b/sec/com/dropboxapi.hoon index 0027032998..5095a3b391 100644 --- a/sec/com/dropboxapi.hoon +++ b/sec/com/dropboxapi.hoon @@ -1,25 +1,27 @@ -:: Test url +https://api.dropboxapi.com/2/files/list_folder +:: Test url +https://api.dropboxapi.com/2/users/get_current_account &json ~ +:: :::: /hoon/dropboxapi/com/sec :: /+ oauth2 :: :::: :: -=+ ^= aut - %+ oauth2 - 'https://www.dropbox.com/1/oauth2/authorize?response_type=code' - 'https://api.dropboxapi.com/1/oauth2/token' -|_ {(bale keys:oauth2) tok/token.aut} -++ aut ~(. ^aut +<- /) -++ out - |= a/hiss - =; mow ~& db-authorized+mow mow - %. a - (out-math:aut tok) -++ in in-code:aut -++ bak (bak-save-access:aut . |=(tok/token:aut +>(tok tok))) +|% +++ dialog-url 'https://www.dropbox.com/1/oauth2/authorize?response_type=code' +++ exchange-url 'https://api.dropboxapi.com/1/oauth2/token' +-- +:: +:::: + :: +|_ {bal/(bale keys:oauth2) tok/token:oauth2} +:: aut is a "standard oauth2" core, which implements the +:: most common handling of oauth2 semantics. see lib/oauth2 for more details. +++ aut (~(standard oauth2 bal tok) . |=(tok/token:oauth2 +>(tok tok))) +++ out (out-add-header:aut scope=~ dialog-url) +:: +++ in (in-code-to-token:aut exchange-url) +++ bak bak-save-token:aut -- - :: create a developer app on https://www.instagram.com/developer/ to get a :: client id and secret. diff --git a/sec/com/facebook.hoon b/sec/com/facebook.hoon index 4f12879558..468a3baddf 100644 --- a/sec/com/facebook.hoon +++ b/sec/com/facebook.hoon @@ -6,21 +6,36 @@ :: :::: :: -=+ ^= aut - %+ oauth2 - dialog='https://www.facebook.com/dialog/oauth?response_type=code' - exchange='https://graph.facebook.com/v2.3/oauth/access_token' -|_ {bal/(bale keys.aut) access-token/token.aut} -++ auth ~(. aut bal /'user_about_me'/'user_posts') -++ out (out-quay:auth key='access_token' value=access-token) -++ in in-code:auth -++ bak - %- (bak-parse:auth . access-token.aut expires-in.aut ~) - |= {access-token/@t expires-in/@u} - ?: (lth expires-in ^~((div ~d7 ~s1))) :: short-lived token - %^ toke-req:auth grant-type='fb_exchange_token' - [key='fb_exchange_token' value=access-token] - ~ - [[%redo ~] ..bak(access-token access-token)] -::++ wyp ~ +|% +++ dialog-url 'https://www.facebook.com/dialog/oauth?response_type=code' +++ exchange-url 'https://graph.facebook.com/v2.3/oauth/access_token' +-- +:: +:::: + :: +|_ {bal/(bale keys:oauth2) access-token/token:oauth2} +:: aut is a "standard oauth2" core, which implements the +:: most common handling of oauth2 semantics. see lib/oauth2 for more details. +++ aut + %+ ~(standard oauth2 bal access-token) . + |=(access-token/token:oauth2 +>(access-token access-token)) +:: +++ out + %^ out-add-query-param:aut 'access_token' + scope=~['user_about_me' 'user_posts'] + dialog-url +:: +++ in (in-code-to-token:aut exchange-url) +:: +++ bak + |= a/httr ^- core-move:aut + ?: (bad-response:aut p.a) + [%give a] :: [%redo ~] :: handle 4xx? + =+ `{access-token/@t expires-in/@u}`(grab-expiring-token:aut a) + ?. (lth expires-in ^~((div ~d7 ~s1))) :: short-lived token + [[%redo ~] ..bak(access-token access-token)] + :- %send + %^ token-request:aut exchange-url + grant-type='fb_exchange_token' + [key='fb_exchange_token' value=access-token]~ -- diff --git a/sec/com/instagram.hoon b/sec/com/instagram.hoon index d286b79f53..cfcb5e81cf 100644 --- a/sec/com/instagram.hoon +++ b/sec/com/instagram.hoon @@ -1,3 +1,4 @@ +:: Test url +https://api.instagram.com/v1/users/self :: :::: /hoon/instagram/com/sec :: @@ -5,21 +6,25 @@ :: :::: :: -=+ ^= aut - %+ oauth2 - 'https://api.instagram.com/oauth/authorize?response_type=code' - 'https://api.instagram.com/oauth/access_token' -|_ {(bale keys:oauth2) tok/token.aut} -++ aut ~(. ^aut +<- /basic) -++ out - |= a/hiss - =; mow ~& db-authorized+mow mow - %. a - (out-quay:aut 'access_token'^tok) -++ in in-code:aut -++ bak (bak-save-access:aut . |=(tok/token:aut +>(tok tok))) +|% +++ dialog-url 'https://api.instagram.com/oauth/authorize?response_type=code' +++ exchange-url 'https://api.instagram.com/oauth/access_token' +-- +:: +:::: + :: +|_ {bal/(bale keys:oauth2) tok/token:oauth2} +:: aut is a "standard oauth2" core, which implements the +:: most common handling of oauth2 semantics. see lib/oauth2 for more details. +++ aut (~(standard oauth2 bal tok) . |=(tok/token:oauth2 +>(tok tok))) +++ out + %^ out-add-query-param:aut 'access_token' + scope=~[%basic] + dialog-url +:: +++ in (in-code-to-token:aut exchange-url) +++ bak bak-save-token:aut -- - :: create a developer app on https://www.instagram.com/developer/ to get a :: client id and secret