[백업][가리사니] 2017년 3월 25일 이후 페이스북 로그인 ( oauth api ) 이 동작하지 않는 경우.
html, http, javascript, json

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

어떤 서비스의 페이스북 로그인이 갑자기 동작하지 않아, 가리사니의 로그인도 동작하는지 확인하던 중 동작하지 않는 사실을 알았습니다.!!

"여러분도 페이스북 로그인을 연동하고 있다면 지금 동작여부를 확인하시기 바랍니다."

원인

https://developers.facebook.com/docs/apps/changelog 내용을 보시면 페이스북 api의 2.2 버전이 2017년 3월 25일 만료 됩니다. 버전설정을 하지 않았다면 강제 최소 버전으로 설정 되며 2017년 3월 25일 이후 api가 2.3 버전으로 자동 업데이트 됩니다. API 버전 2.3 변경사항. https://developers.facebook.com/docs/apps/changelog#v2_3 [Oauth 액세스 토큰] 형식 - access_token에 대한 코드를 교환할 때 반환되었던 https://www.facebook.com/v2.3/oauth/access_token의 응답 형식이 이제 URL을 인코딩하는 대신 유효한 JSON을 반환합니다. 이 응답의 새로운 형식은 {"access_token": {TOKEN}, "token_type":{TYPE}, "expires_in":{TIME}}입니다. 이 업데이트는 RFC 6749의 섹션 5.1을 따릅니다.

변경점 - 해결법

소스의 https://graph.facebook.com/oauth/access_token 의 호출 부분을 확인합니다. 기존응답전문 (2.2버전 이전 : 2017년 3월 25일 이후 강제만료) -- 기존 기록을 기록해 두지 않아 현재 전문을 보고 비슷하게 꾸며보았습니다. access_token=값&token_type=값&expires_in=값&auth_type=값 변경응답전문 (2.3버전 이후) {"access_token":"값","token_type":"값","expires_in":값,"auth_type":"값"}

기존코드는 위 기존응답전문을 파싱하여 사용하고 있을 것 입니다. 해당 코드를 아래 json 처리 방식으로 바꾸어 해결 하시면 됩니다.

또한 토큰을 주고받는 주소가 v2.2 같이 되어 있다면, 생략하거나 더 상위버전으로 바꾸어 주시면 됩니다.

추신

제가 담당하고 있는 회사 프로젝트는 OAuth 연동 포인트가 없어, 모르고 있었는데 (요즘 개인적으로 바빠서 가리사니에 잘 못들어오고 있습니다. ㅠㅠ) 페이스북과 연동포인트가 있는 프로젝트를 담당하는 동료가 해당 버그를 발견하고 수정하면서 저도 알게되었습니다. 회사에 있는동안 그분이 원인을 찾아내셔서.. 가리사니를 고치면서 할일이 없었습니다.... 문서작성하고 숟가락 올리기 !!