O fluxo abaixo descreve como se deve obter um token (que não expira) para acesso à uma fanpage específica. Para tratar múltiplas fanpages de diferentes usuários, seria mais correto armazenar os tokens no db e criar um endpoint para tratar o callback de auth do FB.
O token gerado pode ser confirmado aqui: https://developers.facebook.com/tools/debug
- Criar um app e configurar 'Website with Facebook Login' para
http://localhost:3000
oauth = Koala::Facebook::OAuth.new(ENV['FB_APP_ID'], ENV['FB_APP_SECRET'],ENV['FB_CALLBACK_URL'])
ENV['FB_CALLBACK_URL']
pode serhttp://localhost:3000
, já que estamos fazendo todo o processo manualmente. Se precisássemos pegar o token de diferentes usuários, o certo é criar um endpoint para tratar o callback- Logado como admin da Page, copiar o code que irá surgir na url gerada por:
oauth.url_for_oauth_code(permissions: 'read_stream')
Repare que só pegamos a permissãoread_stream
, mas poderíamos pegar outras diversas. token = oauth.get_access_token({code})
exchanged_token = oauth.exchange_access_token(token)
mais em: https://developers.facebook.com/docs/facebook-login/access-tokens/#extendingapi = Koala::Facebook::API.new(exchanged_token)
token_definitivo_que_nao_expira = api.get_page_access_token(ENV['FB_FAN_PAGE_ID'])
api = Koala::Facebook::API.new(token_definitivo_que_nao_expira)