Estou brincando com a autorização do Oauth 2.0 no Facebook e queria saber se os tokens de acesso que o Facebook passará a expirar. Em caso afirmativo, existe uma maneira de solicitar um token de acesso de longa duração?
Estou brincando com a autorização do Oauth 2.0 no Facebook e queria saber se os tokens de acesso que o Facebook passará a expirar. Em caso afirmativo, existe uma maneira de solicitar um token de acesso de longa duração?
Respostas:
Depois de cavar um pouco, achei isso. Parece ser a resposta:
Atualizado (11 / abril / 2018)
Anúncio de alteração do Facebook (04/04/2018)
Página de vencimento atualizada do token do Facebook (04/04/2018)
offline_access: permite que seu aplicativo execute solicitações autorizadas em nome do usuário a qualquer momento. Por padrão, a maioria dos tokens de acesso expira após um curto período de tempo para garantir que os aplicativos façam solicitações apenas em nome do usuário quando o estiver usando ativamente. Essa permissão faz com que o token de acesso retornado por nosso terminal OAuth tenha vida longa.
É um valor de permissão solicitado.
http://developers.facebook.com/docs/authentication/permissions
ATUALIZAR
A permissão offline_access foi removida há um tempo atrás.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
Tente isso pode ser que vai ajudar completo para você
https://graph.facebook.com/oauth/authorize?
client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
redirect_uri=http://www.example.com/
Para obter o token de acesso vitalício, é necessário usar scope=offline_access
O significado de scope=offline_access
é que: -
Permite que seu aplicativo execute solicitações autorizadas em nome do usuário a qualquer momento. Por padrão, a maioria dos tokens de acesso expira após um curto período de tempo para garantir que os aplicativos façam solicitações apenas em nome do usuário quando o estiver usando ativamente. Essa permissão faz com que o token de acesso retornado por nosso terminal OAuth tenha vida longa.
Porém, de acordo com a futura atualização do facebook, a funcionalidade offline_acees ficará obsoleta para sempre a partir de 3 de outubro de 2012. e o usuário receberá um token de acesso de 60 dias e antes da expiração do token de acesso que o Facebook notificará ou você poderá obter seu costume funcionalidade de notificação buscando o valor de expiração da API do Facebook.
Observe que agora o Facebook está preterindo a permissão offline_access em favor de tokens para os quais você pode solicitar uma "atualização" até o vencimento. Agora, eu mesmo estou lidando com isso, então não tenho muito mais a dizer, mas este documento pode ajudar:
https://developers.facebook.com/docs/offline-access-deprecation/
Eu vim aqui com a mesma pergunta que o OP, mas as respostas sugerindo o uso do offline_access estão levantando sinalizadores para mim.
Em termos de segurança, obter acesso offline à conta do Facebook de um usuário é qualitativamente diferente e muito mais poderoso do que apenas usar o Facebook para logon único e não deve ser usado de ânimo leve (a menos que você realmente precise). Quando um usuário concede essa permissão, "o aplicativo" pode examinar a conta do usuário de qualquer lugar a qualquer momento. Coloquei "o aplicativo" entre aspas, porque na verdade é qualquer ferramenta que possua credenciais - você pode criar um conjunto de ferramentas que não têm nada a ver com o servidor da web que pode acessar as informações que o usuário concordou em compartilhar com aqueles credenciais.
Eu não usaria esse recurso para solucionar uma vida útil curta do token; esse não é o seu objetivo. De fato, a vida útil do token em si é um recurso de segurança. Ainda estou procurando detalhes sobre o uso adequado desses tokens (posso persistir? Como protegê-los / devo protegê-los? O Facebook incorpora o "token de atualização" do OAuth 2.0 dentro do principal? Caso contrário, onde e / ou como atualizo?), mas tenho certeza de que offline_access não é o caminho certo.
Sim, eles expiram. Há um valor 'expirar' que é passado junto com o 'access_token', e pelo que posso dizer, são cerca de 2 horas. Estive pesquisando, mas não vejo uma maneira de solicitar um prazo de validade mais longo.
desde que tive o mesmo problema - veja o excelente post sobre este assunto de ben biddington, que esclareceu todos esses problemas com o token errado e o tipo certo para enviar as solicitações.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Você sempre pode atualizar o token de acesso do usuário toda vez que o usuário fizer login no seu site através do facebook. O acesso offline não pode garantir que você obtenha um token de acesso ao longo da vida, o token de acesso muda sempre que o usuário revoga o acesso ao aplicativo ou o usuário altera sua senha.
Citado em facebook http://developers.facebook.com/docs/authentication/
Nota: Se o aplicativo não solicitou a permissão offline_access, o token de acesso é limitado pelo tempo. O token de acesso com limite de tempo também é invalidado quando o usuário sai do Facebook. Se o aplicativo tiver obtido a permissão offline_access do usuário, o token de acesso não terá validade. No entanto, ele é invalidado sempre que o usuário altera sua senha.
Suponha que você armazene o uid do facebook e o token de acesso do usuário em uma tabela de usuários em seu banco de dados, toda vez que o usuário clicar no botão "Login com facebook", verifique o status do login usando a API Javascript do facebook e examine o status da conexão a partir da resposta , se o usuário tiver se conectado ao seu site, você poderá atualizar o token de acesso na tabela.
entre na conta do facebook e edite as configurações do seu aplicativo (conta -> configuração do aplicativo -> permissão adicional do aplicativo que usa sua conta). desmarque a permissão (acesse meus dados quando não estiver usando o aplicativo (offline_access)). Em seguida, o face registrará a emissão de um novo token ao fazer login no aplicativo.
Básico, o token do facebook expira em uma hora. Mas você pode usar o token 'exchange' para obter um token de vida longa https://developers.facebook.com/docs/facebook-login/access-tokens
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
verifique o seguinte ao interagir com a API do gráfico do facebook.
1) O URL de conexão do aplicativo deve ser a base do seu URL de conexão "redirect_uri": - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) Seu "redirect_uri "deve ser o mesmo nos dois casos (quando você solicita um código de verificação e solicita um access_token) redirect_uri - www.x-minds.org/fb/connect/redirect 3), você deve codificar o argumento ao solicitar um access_token 4) não deve passar o argumento (tipo = client_cred) quando você solicita um access_token. o servidor de autorização emitirá um token sem parte da sessão. não podemos usar esse token com o alias "me" na API do gráfico. Este token terá um comprimento de (40), mas um token com parte da sessão terá um comprimento de (81). Um token de acesso sem parte da sessão funcionará com alguns casos
por exemplo: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Mas a API do Graph com o alias "me" funcionará apenas com token com parte da sessão.
Não sei quando exatamente os tokens expiram, mas o fazem, caso contrário, não haveria uma opção para conceder permissões offline.
De qualquer forma, às vezes exigir que o usuário dê permissões offline é um exagero. Dependendo das suas necessidades, talvez seja suficiente que o token permaneça válido enquanto o site for aberto no navegador do usuário. Para isso, pode haver uma solução mais simples - registrar o usuário periodicamente usando um iframe: facebook auto re-login from cookie php
Trabalhou para mim ...
Isso ocorre alguns anos depois, mas o Facebook Graph API Explorer agora possui um pequeno símbolo de informações ao lado do token de acesso que permite acessar o aplicativo da ferramenta de token de acesso e estender o token da API por alguns meses. Pode ser útil durante o desenvolvimento.