Facebook Oauth 2.0 액세스 토큰이 만료됩니까?


124

Facebook에서 Oauth 2.0 인증을 가지고 놀면서 Facebook이 전달한 액세스 토큰이 만료되는지 궁금합니다. 그렇다면 장기 액세스 토큰을 요청할 수있는 방법이 있습니까?


4
이 질문에 몇 가지 세부 사항을 추가하려면 사용자가 Facebook 비밀번호를 변경하면 offline_access도 무효화됩니다. 따라서 이전 토큰을 사용할 때 오류가 발생하면 안전하게 플레이하고 새 액세스 토큰을 다시받는 것이 좋습니다.
Hoàng Long


2
얘들 아, 너희 모두 그냥 흔들어. 질문이 무엇이든간에, 난 그냥 당신에게 모든 감사 ... 그것은 해결 얻을
인 Vinay

3
Facebook이 5 월 1 일에 offline_access 권한을 지원 중단하는 것 같습니다. 앞으로 모든 액세스 토큰은 "만료 시간"(60 일)이 만료되거나 사용자가 비밀번호를 변경하거나 사용자가 앱을 승인 취소하거나 사용자가 로그 아웃하면 만료됩니다. API . 추신 : 액세스 토큰이 여전히 로그 아웃시 만료되는 경우 Facebook이 새로운 "만료 시간"을 60 일로 설정하는 이유를 잘 모르겠습니다 (사용자가 60 일 이내에 로그 아웃하는 경향이있는 것처럼 보임). 어쩌면 내가 모르는 뭔가가있어 ... 만료
스티븐 웩슬러

1
access_token 동작이 지금 변경되고 있습니다. 2012 년 7 월 "Breaking Changes"를 찾아봐야합니다. offline_access 권한은 더 이상 사용되지 않으며 access_token의 수명주기가 길 것입니다.
qodeninja

답변:


64

조금 뒤져 보니 이걸 찾았어요. 답인 것 같습니다.

업데이트 됨 (2018 년 4 월 11 일)

  • 토큰은 약 60 일 후에 만료됩니다.
  • 토큰은 앱을 사용하는 사람이 Facebook 서버에 요청할 때 최대 90 일 동안 하루에 한 번 새로 고쳐집니다.
  • 모든 액세스 토큰은 앱을 사용하는 사람의 동의하에 90 일마다 갱신되어야합니다.

Facebook 변경 발표 (2018 년 10 월 4 일)

Facebook 업데이트 된 토큰 만료 페이지 (2018 년 10 월 4 일)

offline_access : 애플리케이션이 언제든지 사용자를 대신하여 승인 된 요청을 수행 할 수 있도록합니다. 기본적으로 대부분의 액세스 토큰은 짧은 시간 후에 만료되어 응용 프로그램이 응용 프로그램을 적극적으로 사용할 때만 사용자 대신 요청을 할 수 있도록합니다. 이 권한은 OAuth 끝점에서 반환 된 액세스 토큰을 오래 유지합니다.

요청 된 권한 값입니다.

http://developers.facebook.com/docs/authentication/permissions

최신 정보

offline_access 권한이 얼마 전에 제거되었습니다.

https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/


2
이에 대한 응답으로 여러분에게 유용 할 수있는 오픈 소스 라이브러리를 시작했습니다. oAuth 구현으로 모든 소셜 네트워크를 지원하는 것을 목표로하는 oAuth 라이브러리입니다. 이미 오프라인 게시를 포함한 확장 권한을 지원합니다. code.google.com/p/socialoauth
Tendrid

사용자가 Facebook에서 비밀번호를 변경하면 offline_access 토큰도 만료됩니다.
Bemmu 2012

불행히도 이것은 당면한 문제에 대한 "깨끗한"해결책이 아닙니다. 이 권한을 요청하는 첫 번째 또는 모든 것은 사용자에게 추가 권한 (예 :이 응용 프로그램이 언제든지 페이스 북 계정에 액세스 할 수 있음)을 알리며, 이로 인해 많은 잠재 고객이 꺼집니다. 둘째, 사용으로 인해 비밀번호가 변경되면이 토큰은 유효하지 않습니다. 따라서 특히 리치 클라이언트 아약스 기반 웹 애플리케이션의 경우 새로운 access_token을 얻기위한 더 나은 방법 (예 : 새로 고침 토큰)이 필요합니다.
Vladimir

24
그들에 따르면 API 문서 offline_access 더 이상 5 월 2 일 2012 년으로 지원되지 않습니다
벤 레 쉬는

@Tendrid 라이브러리는 Facebook 및 Twitter 만 지원합니다.
mareoraft

30

이것이 당신에게 도움이 될 것입니다.

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/

평생 액세스 토큰을 얻으려면 사용해야합니다. scope=offline_access

의 의미 scope=offline_access는 :-

애플리케이션이 언제든지 사용자를 대신하여 승인 된 요청을 수행 할 수 있도록합니다. 기본적으로 대부분의 액세스 토큰은 짧은 시간 후에 만료되어 응용 프로그램이 응용 프로그램을 적극적으로 사용할 때만 사용자 대신 요청을 할 수 있도록합니다. 이 권한은 OAuth 끝점에서 반환 된 액세스 토큰을 오래 유지합니다.

그러나 페이스 북의 향후 업그레이드에 따라 offline_acees 기능은 2012 년 10 월 3 일부터 영원히 사용되지 않을 것입니다. 사용자에게 60 일 수명의 액세스 토큰이 제공되며 액세스 토큰이 만료되기 전에 Facebook에서 알리거나 사용자 정의를 얻을 수 있습니다. Facebook API에서 만료 값을 가져 오는 알림 기능 ..


10
fb가 그의 API에서 변경되었으며 이제 수명 토큰을 사용할 수 없음을 알려 드리고자합니다. 이제 오프라인 액세스는 60 일 동안 활성화됩니다.
PrateekSaluja


17

나는 OP와 같은 질문으로 여기에 왔지만 offline_access 사용을 제안하는 답변은 나를 위해 적신호를 불러 일으키고 있습니다.

보안 측면에서 사용자의 Facebook 계정에 오프라인으로 액세스하는 것은 단일 사인온에 Facebook을 사용하는 것보다 질적으로 다르고 훨씬 강력하며 가볍게 사용해서는 안됩니다 (정말 필요하지 않은 경우). 사용자가이 권한을 부여하면 "응용 프로그램"은 언제 어디서나 사용자의 계정을 검사 할 수 있습니다. 실제로 자격 증명이있는 모든 도구이기 때문에 "응용 프로그램"을 따옴표로 묶었습니다. 사용자가 공유하기로 동의 한 정보에 액세스 할 수있는 웹 서버와 관련이없는 전체 도구 모음을 스크립팅 할 수 있습니다. 신임장.

짧은 토큰 수명을 해결하기 위해이 기능을 사용하지 않습니다. 그것은 의도 된 목적이 아닙니다. 실제로 토큰 수명 자체는 보안 기능입니다. 이러한 토큰의 적절한 사용에 대한 세부 정보를 계속 찾고 있습니다 (유지할 수 있습니까? 어떻게 보호해야합니까? 어떻게 보호해야합니까? Facebook에 OAuth 2.0 "새로 고침 토큰"이 포함되어 있습니까? 그렇지 않은 경우 어디에 있습니까?). / 또는 어떻게 새로 고치나요?),하지만 offline_access가 올바른 방법이 아니라고 확신합니다.


1
여기에 같은 의심 데이비드. 오프라인 액세스를 위해 저장된 토큰을 보호하는 방법에 대한 자세한 정보를 찾았습니까?
neal aise

Facebook의 문서는 끔찍하지만 offline_access로 획득하지 않은 액세스 토큰을 유지하는 것이 합리적으로 안전 하다고 생각 합니다. FB 사용자가 아직 로그인 한 상태에서 액세스 권한을 가진 사람은 누구나 권한을 부여한 모든 작업을 수행 할 수 있지만 사용자가 페이스 북에서 로그 아웃하자마자 토큰이 무효화되므로 그렇게 나쁘지는 않습니다. 어딘가에. 여전히 보안 허점이지만 (/ me 요청에 앱 비밀을 제공 할 필요가 없다는 것이 이상하다고 생각합니다.) 개방형이 아닙니다. 누군가가 이것을 더 잘 이해한다면 나를 바로 잡으십시오.
David Pope

8

예, 만료됩니다. 'access_token'과 함께 전달되는 'expires'값이 있으며 내가 알 수있는 것은 약 2 시간입니다. 검색 중이지만 더 긴 만료 시간을 요청할 방법이 없습니다.


3
'offline_access'권한을 요청하면 토큰이 만료되지 않습니다.
Brendan Berg

1
@Brendan :하지만 그것은 곧 사용자의 변화 등으로 무효가 얻을 것이다 그 / 그녀의 페이스 북의 비밀
호앙 롱

@ HoàngLong 이것에 대한 언급이 있습니까?
Charles Prakash Dasari


4

사용자가 Facebook을 통해 사이트에 로그인 할 때마다 항상 사용자의 액세스 토큰을 새로 고칠 수 있습니다. 오프라인 액세스는 평생 액세스 토큰을 보장 할 수 없으며 사용자가 애플리케이션 액세스를 취소하거나 사용자가 자신의 비밀번호를 변경할 때마다 액세스 토큰이 변경됩니다.

Facebook http://developers.facebook.com/docs/authentication/ 에서 인용

참고 : 애플리케이션이 offline_access 권한을 요청하지 않은 경우 액세스 토큰은 시간 제한이 있습니다. 사용자가 Facebook에서 로그 아웃 할 때 시간 제한 액세스 토큰도 무효화됩니다. 응용 프로그램이 사용자로부터 offline_access 권한을 얻은 경우 액세스 토큰에는 만료가 없습니다. 그러나 사용자가 비밀번호를 변경할 때마다 무효화됩니다.

사용자의 facebook uid 및 액세스 토큰을 데이터베이스의 users 테이블에 저장했다고 가정하면 사용자가 "Login with facebook"버튼을 클릭 할 때마다 facebook Javascript API를 사용하여 로그인 상태를 확인한 다음 응답에서 연결 상태를 검사합니다. , 사용자가 사이트에 연결 한 경우 테이블에서 액세스 토큰을 업데이트 할 수 있습니다.


3

단기 액세스 토큰을 장기 / 비 만료 (페이지) 토큰으로 교환하려면 이것을 누르십시오.

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

1

페이스 북 계정에 로그인하여 애플리케이션 설정 (계정-> 애플리케이션 설정-> 계정을 사용하는 애플리케이션의 추가 권한)을 편집합니다. 권한을 선택 취소합니다 (응용 프로그램을 사용하지 않을 때 내 데이터 액세스 (offline_access)). 그런 다음 응용 프로그램에 로그인하면 얼굴이 새 토큰을 발행합니다.



0

Facebook 그래프 API와 상호 작용할 때 다음 사항을 확인하십시오.

1) 응용 프로그램 연결 URL은 "redirect_uri"연결 URL의 기본이어야합니다 .- www.x-minds.org/fb/connect/ redirect_uri-www.x-minds.org/fb/connect/redirect 2) "redirect_uri "는 두 경우 모두 동일해야합니다 (인증 코드 요청 및 access_token 요청시) redirect_uri-www.x-minds.org/fb/connect/redirect 3) 요청시 인수를 인코딩해야합니다. access_token 4)는 access_token을 요청할 때 인수 (type = client_cred)를 전달하면 안됩니다. 권한 부여 서버는 세션 부분없이 토큰을 발행합니다. 그래프 API에서 "me"별칭과 함께이 토큰을 사용할 수 없습니다. 이 토큰의 길이는 (40)이지만 세션 부분이있는 토큰의 길이는 (81)입니다. 세션 부분이없는 액세스 토큰은 경우에 따라 작동합니다.

예를 들면 : - https://graph.facebook.com/ access_token은 = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM?. 그러나 "me"별칭이있는 Graph API는 세션 부분이있는 토큰에서만 작동합니다.


0

토큰이 정확히 언제 만료되는지는 모르겠지만 만료됩니다. 그렇지 않으면 오프라인 권한을 부여 할 수있는 옵션이 없습니다.

어쨌든 때때로 사용자에게 오프라인 권한을 요구하는 것은 지나친 일입니다. 필요에 따라 웹 사이트가 사용자의 브라우저에서 열려있는 한 토큰이 유효한 상태로 유지되는 것으로 충분할 수 있습니다. 이를 위해 더 간단한 해결책이있을 수 있습니다-iframe을 사용하여 주기적으로 사용자를 다시 로그인 : facebook auto re-login from cookie php

나를 위해 일했다 ...


0

이는 몇 년 후 공정한 일이지만 이제 Facebook Graph API Explorer에는 액세스 토큰 도구 앱에 액세스하고 API 토큰을 몇 달 동안 확장 할 수있는 액세스 토큰 옆에 작은 정보 기호가 있습니다. 개발 중에 도움이 될 수 있습니다.

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.