Como identificar se o token OAuth expirou?
a minha aplicação móvel iOS consome serviços que são implementados com o protocolo OAuth2.0. O token de acesso de OAuth vem junto com um token de atualização e um campo expires_in
. Eu salvei o token refresh e acesso token tempo de expiração no meu aplicativo, mas não tenho uma boa idéia sobre quando usá-los.
- Então, qual é a prática habitual e melhor de usar isto {[[0]}? Como é que identifico que o meu cartão de acesso expirou?
- existe um formato de erro de serviço web comum que diz O meu o cartão de acesso expirou?
1 answers
Expira Na Definição
O padrão de OAuth 2.0, RFC 6749 , define o campo expires_in
como o número de segundos para expirar:
Expires_ in: recomendado. A vida útil em segundos da ficha de acesso. Por exemplo, o valor "3600" denota que o token de acesso expirará em uma hora a partir do momento em que a resposta foi gerada. Se omitido, o servidor de autorização deve indique o tempo de expiração através de outros meios ou documente o valor por omissão.
Tratamento Da Actualização Do Item: Método 1
Ao receber um access_token
, expires_in
value, refresh_token
, etc., os clientes podem processar isso armazenando um tempo de expiração e verificando-o em cada pedido. Isto pode ser feito usando os seguintes passos:
- converter
expires_in
para um tempo de expiração (época, RFC-3339/ISO-8601 datetime, etc.) - guardar a hora de expiração
- em cada recurso pedido, verifique a hora actual com a hora de expiração e faça um pedido de actualização do item antes do pedido de recursos se o
access_token
expirou
Ao verificar a hora, certifique-se de que é a mesma hora, por exemplo, usando o mesmo fuso-horário, convertendo todos os tempos para o fuso-horário ou UTC.
Além de receber um novo access_token
, você pode receber um novo refresh_token
com um tempo de expiração mais adiante no futuro. Se você receber isto, você deve armazenar o novo refresh_token
para estender o a vida da tua sessão.
Tratamento Da Actualização Do Item: Método 2
Outro método de lidar com a actualização do item é actualizar manualmente depois de receber um erro do item inválido. Isto pode ser feito com a abordagem anterior ou por si só.
Se tentar usar um access_token
expirado e obtiver um erro do item inválido, deverá efectuar uma actualização do item (se o seu item de actualização ainda for válido). Uma vez que diferentes serviços podem usar diferentes códigos de erro para tokens expirados, você pode manter o controle do código para cada serviço ou uma maneira fácil de atualizar tokens através de serviços é simplesmente tentar uma única atualização ao encontrar um erro 4xx.
Erros Do Item De Acesso Inválidos
Abaixo estão alguns códigos de erro dos serviços populares:
- Facebook: erro 467 token de acesso inválido - o token de acesso expirou, foi revogado, ou é inválido - Handle tokens de acesso expirado.
- LinkedIn: Erro 401 Não autorizado.
- Paypal: Erro 401 Não Autorizado.
Actualizar A Expiração Do Item
Se o seu refresh_token
também expirou, terá de passar pelo processo de autorização novamente.