:: Test url +https://graph.facebook.com/v2.5/me :: :::: /hoon/facebook/com/sec :: /+ oauth2 :: :::: :: |% ++ dialog-url 'https://www.facebook.com/dialog/oauth?response_type=code' ++ exchange-url 'https://graph.facebook.com/v2.3/oauth/access_token' -- :: :::: :: |_ {bal/(bale:eyre 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, :: and examples at the bottom of the file. ++ aut %+ ~(standard oauth2 bal access-token) . |=(access-token/token:oauth2 +>(access-token access-token)) :: ++ filter-request %^ out-add-query-param:aut 'access_token' scope=~['user_about_me' 'user_posts'] dialog-url :: ++ receive-auth-query-string (in-code-to-token:aut exchange-url) :: ++ receive-auth-response |= a/httr:eyre ^- 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 ~] +>.$(access-token access-token)] :- %send %^ request-token:aut exchange-url grant-type='fb_exchange_token' [key='fb_exchange_token' value=access-token]~ --