만료된 Facebook OAuth2 액세스 토큰을 새로 고치는 올바른 방법은 무엇입니까?
내가 알기로는 OAuth2 API를 사용하는 새로운 Facebook iframe 캔버스 앱의 기본 프로세스입니다.
- 앱의 인증 URL로 리디렉션(또는 사용자가 링크를 클릭하도록 함)
- 사용자가 승인하고 콜백 URL로 리디렉션됩니다.
- 콜백은 "코드" 매개변수를 사용하여 액세스 토큰을 얻습니다.
- 액세스 토큰은 그래프 API와 함께 정보를 가져오거나 푸시하는 데 사용됩니다.
문제는 액세스 토큰이 비교적 빨리 만료되고 "새로 고침"해야 한다는 것입니다. 따라서 제 질문은 1) 토큰을 사용하려고 시도하고 단순히 오류가 발생하는 것 외에 토큰이 만료되었음을 어떻게 감지합니까? 2) 새 토큰을 얻기 위한 모범 사례는 무엇입니까?
현재 액세스 토큰을 사용하여 사용자 정보를 가져온 다음 인증 URL로 다시 리디렉션하는 데 오류가 있음을 감지했습니다. 이미 앱을 승인했기 때문에 빈 페이지가 깜박이고 내 앱 콜백으로 다시 리디렉션됩니다. 내가 새로운 토큰을 얻는 곳. 너무 투박해서 이것이 적절한 방법인지 믿을 수 없습니다.
쿠키가 유효한지 확인하는 유일한 방법은 쿠키를 사용하고 만료된 경우 오류를 잡는 것입니다. 토큰이 유효한지 확인하는 폴링 방법이나 어떤 것도 없습니다.
새 토큰을 얻으려면 사용자를 인증 페이지로 다시 리디렉션하기만 하면 됩니다. 그들은 이미 앱을 승인했기 때문에 즉시 앱으로 다시 리디렉션되고 새 토큰을 갖게 됩니다. 그들은 이미 그렇게 했으므로 허용하라는 메시지가 표시되지 않습니다.
요컨대, 여기에는 트릭이 없습니다. 당신은 이미 올바르게 하고 있습니다.
최근 페이스북은 액세스 토큰을 주기적으로 새로 고칠 수 있도록 일부 변경을 했습니다.
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
자세한 내용은 여기를 확인하세요: https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal
//you just need more step because the access token you are getting will expire in 1 hour
//you can overcome this in step 5
1-Redirect to (or have user click link to) app's authorization URL
2-User authorizes and is redirected to your callback URL
3-Callback uses "code" parameter to get a access token
4-Access token is used with Graph API to pull or push information
5-exchange short-lived access token you just got with 60 day access token
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
6-after 60 day the user must login again to your app and the steps from 1-5 will be repeated.
--the real problem you will face is how to make the user visit your app page again
Facebook은 "대신" 모드에서 액세스 토큰 새로 고침 기능을 제거했습니다. 가장 쉽고 쉬운 방법은 사용자를 Facebook 로그인 페이지로 리디렉션하여 앱을 다시 인증하는 것입니다. 여기에서 facbook 문서 찾기
사용자가 이미 애플리케이션을 승인했으며 액세스 토큰이 만료된 경우. 사용자를 인증 페이지로 다시 리디렉션할 수 있습니다. 그러나 사용자가 이미 응용 프로그램을 승인했기 때문에 oauth 대화 상자가 표시되지 않습니다. 그는 당신이 사용한 redirect_url 매개변수로 리디렉션할 것입니다.
{ "error": { "message": "redirect_uri 매개변수가 없습니다.", "type": "OAuthException", "code": 191, "fbtrace_id": "BHvng7s53ra" }}
ReferenceURL : https://stackoverflow.com/questions/4622171/what-is-the-correct-way-to-refresh-facebook-oauth2-access-token-after-it-expires
'IT이야기' 카테고리의 다른 글
libc 없이 컴파일 (0) | 2021.10.22 |
---|---|
PropertyInfo가 컬렉션인지 확인하는 방법 (0) | 2021.10.21 |
사용자에게 POST 데이터를 다시 보내라는 메시지를 표시하지 않고 POST 후 브라우저 창 다시 로드 (0) | 2021.10.21 |
Symfony 2 : 다중 및 동적 데이터베이스 연결 (0) | 2021.10.21 |
git의 기록에서 제거하지 않고 분기를 닫는 방법 (0) | 2021.10.21 |