Facebook에서 Oauth 2.0 인증을 가지고 놀면서 Facebook이 전달한 액세스 토큰이 만료되는지 궁금합니다. 그렇다면 장기 액세스 토큰을 요청할 수있는 방법이 있습니까?
Facebook에서 Oauth 2.0 인증을 가지고 놀면서 Facebook이 전달한 액세스 토큰이 만료되는지 궁금합니다. 그렇다면 장기 액세스 토큰을 요청할 수있는 방법이 있습니까?
답변:
조금 뒤져 보니 이걸 찾았어요. 답인 것 같습니다.
업데이트 됨 (2018 년 4 월 11 일)
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/
이것이 당신에게 도움이 될 것입니다.
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에서 만료 값을 가져 오는 알림 기능 ..
Facebook은 현재 "업그레이드"만료를 요청할 수있는 토큰을 위해 offline_access 권한을 더 이상 사용하지 않습니다. 지금은이 문제를 직접 다루고 있으므로 할 말이별로 없지만이 문서가 도움이 될 수 있습니다.
https://developers.facebook.com/docs/offline-access-deprecation/
나는 OP와 같은 질문으로 여기에 왔지만 offline_access 사용을 제안하는 답변은 나를 위해 적신호를 불러 일으키고 있습니다.
보안 측면에서 사용자의 Facebook 계정에 오프라인으로 액세스하는 것은 단일 사인온에 Facebook을 사용하는 것보다 질적으로 다르고 훨씬 강력하며 가볍게 사용해서는 안됩니다 (정말 필요하지 않은 경우). 사용자가이 권한을 부여하면 "응용 프로그램"은 언제 어디서나 사용자의 계정을 검사 할 수 있습니다. 실제로 자격 증명이있는 모든 도구이기 때문에 "응용 프로그램"을 따옴표로 묶었습니다. 사용자가 공유하기로 동의 한 정보에 액세스 할 수있는 웹 서버와 관련이없는 전체 도구 모음을 스크립팅 할 수 있습니다. 신임장.
짧은 토큰 수명을 해결하기 위해이 기능을 사용하지 않습니다. 그것은 의도 된 목적이 아닙니다. 실제로 토큰 수명 자체는 보안 기능입니다. 이러한 토큰의 적절한 사용에 대한 세부 정보를 계속 찾고 있습니다 (유지할 수 있습니까? 어떻게 보호해야합니까? 어떻게 보호해야합니까? Facebook에 OAuth 2.0 "새로 고침 토큰"이 포함되어 있습니까? 그렇지 않은 경우 어디에 있습니까?). / 또는 어떻게 새로 고치나요?),하지만 offline_access가 올바른 방법이 아니라고 확신합니다.
예, 만료됩니다. 'access_token'과 함께 전달되는 'expires'값이 있으며 내가 알 수있는 것은 약 2 시간입니다. 검색 중이지만 더 긴 만료 시간을 요청할 방법이 없습니다.
나는 같은 문제가 있었기 때문에-Ben biddington 의이 주제에 대한 훌륭한 게시물을 참조하십시오. Ben biddington 은이 모든 문제를 잘못된 토큰과 요청에 대해 보낼 올바른 유형으로 설명했습니다.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
사용자가 Facebook을 통해 사이트에 로그인 할 때마다 항상 사용자의 액세스 토큰을 새로 고칠 수 있습니다. 오프라인 액세스는 평생 액세스 토큰을 보장 할 수 없으며 사용자가 애플리케이션 액세스를 취소하거나 사용자가 자신의 비밀번호를 변경할 때마다 액세스 토큰이 변경됩니다.
Facebook http://developers.facebook.com/docs/authentication/ 에서 인용
참고 : 애플리케이션이 offline_access 권한을 요청하지 않은 경우 액세스 토큰은 시간 제한이 있습니다. 사용자가 Facebook에서 로그 아웃 할 때 시간 제한 액세스 토큰도 무효화됩니다. 응용 프로그램이 사용자로부터 offline_access 권한을 얻은 경우 액세스 토큰에는 만료가 없습니다. 그러나 사용자가 비밀번호를 변경할 때마다 무효화됩니다.
사용자의 facebook uid 및 액세스 토큰을 데이터베이스의 users 테이블에 저장했다고 가정하면 사용자가 "Login with facebook"버튼을 클릭 할 때마다 facebook Javascript API를 사용하여 로그인 상태를 확인한 다음 응답에서 연결 상태를 검사합니다. , 사용자가 사이트에 연결 한 경우 테이블에서 액세스 토큰을 업데이트 할 수 있습니다.
기본적으로 페이스 북 토큰은 약 1 시간 후에 만료됩니다. 그러나 '교환'토큰을 사용하여 수명이 긴 토큰을 얻을 수 있습니다 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}
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는 세션 부분이있는 토큰에서만 작동합니다.
토큰이 정확히 언제 만료되는지는 모르겠지만 만료됩니다. 그렇지 않으면 오프라인 권한을 부여 할 수있는 옵션이 없습니다.
어쨌든 때때로 사용자에게 오프라인 권한을 요구하는 것은 지나친 일입니다. 필요에 따라 웹 사이트가 사용자의 브라우저에서 열려있는 한 토큰이 유효한 상태로 유지되는 것으로 충분할 수 있습니다. 이를 위해 더 간단한 해결책이있을 수 있습니다-iframe을 사용하여 주기적으로 사용자를 다시 로그인 : facebook auto re-login from cookie php
나를 위해 일했다 ...
이는 몇 년 후 공정한 일이지만 이제 Facebook Graph API Explorer에는 액세스 토큰 도구 앱에 액세스하고 API 토큰을 몇 달 동안 확장 할 수있는 액세스 토큰 옆에 작은 정보 기호가 있습니다. 개발 중에 도움이 될 수 있습니다.