Azure & Facebook troubleshooting
Cloud / 2011/02/24 15:56
지금까지 AzurePicture 클라우드 웹 어플리케이션을 소개해드렸습니다. azure와 facebook 모두 웹에서 이루어지는 것이다 보니 디버깅이 어려운 점도 있다고 할 수 있습니다. 그래서 어플리케이션을 만들면서 겪었던 오류와 관련해 포스팅하고자 합니다.
먼저 facebook 관련해서 겪었던 오류를 말씀드리도록 하겠습니다. facebook api를 사용하면서 가장 많이 마주쳤던 에러는 바로 400번, 403번 에러와 쿠키 문제였습니다.
400번 에러의 경우 아래와 같은 화면이 뜨게 되었습니다.
이 페이지는 주로 프로그램에서 적은 redirect url과 facebook 어플리케이션에 설정에서 등록한 redirect url이 일치하지 않을 때 발생했습니다. facebook의 redirect url의 하위 페이지기만 하면 인식이 가능하므로 이것이 일치하는지 먼저 확인하시기 바랍니다. 또한 이전 포스팅에서 올린 코드로 localhost에서 테스트를 할 때는 당연히 azurepicture.cloudapp.net 사이트가 존재하지 않기 때문에 실행되지 않게 됩니다. 따라서 local에서 테스트를 할 때는 http://localhost:81/페이지이름.aspx 와 같은 형식으로 적어 테스트하시기 바랍니다. 여기서 81은 포트번호를 뜻합니다.
두번째로 말씀드릴 것은 403 에러입니다.
The remote server returned an error: (403) Forbidden
와 같은 문장이 뜨게 되는데요. 이것은 주로 permission의 문제에서 일어났습니다. 허락을 구한 permission 이상의 것을 시도하려고 할 때 이런 에러가 발생하게 됩니다. 처음 어플리케이션을 실행하고 페이스북 아이디와 비밀번호로 로그인을 할 때 아래와 같이 permission 창이 뜨게 됩니다.
만약 이 permission 창에서 자신이 필요로 하는 허가 요청이 뜨지 않는다면 프로그램 코드에서 permission 요청하는 곳에 문제가 있을 가능성이 큽니다. 따라서 다시 한번 프로그램의 scope 부분을 확인하는 것이 좋습니다. 특히 글을 쓰는 경우 scope에서 publish_stream을 요청하지 않는다면 접근이 불가능하기 때문에 꼭 추가하시기 바랍니다. 추가적인 facebook의 permission 관련해서는 아래의 링크에서 확인하실 수 있습니다.
http://developers.facebook.com/docs/authentication/permissions/
세번째 문제는 쿠키 문제입니다. facebook api에서는 로그인 했던 사람의 정보를 쿠키로 저장하고 있어 로그아웃 하지 않으면 계속 로그인 상태를 유지할 수 있습니다. 그런데 이것이 잘못되어 로그인이 되어있지 않음에도 불구하고 쿠키의 문제로 로그인되어있다고 인식하는 경우가 있었습니다. 따라서 facebook에서 로그아웃 한 뒤 어플리케이션을 실행해도 로그인 상태로 인식되어 로그인 창 자체가 뜨지 않는 문제가 발생했습니다. 이를 해결하기 위해서는 브라우저에서 쿠키를 삭제하시면 됩니다. 도구-인터넷옵션으로 들어간 뒤 검색기록에서 쿠키를 삭제하면 문제가 해결되니 이와 같은 문제가 생기면 쿠키 문제를 의심하시길 바랍니다.
Azure에서는 딱히 큰 문제가 없었으나 swap VIP에서 문제가 생기는 경우가 있었습니다. 이전에 말씀드렸다시피 swap VIP는 임시 도메인에서 설정했던 도메인 주소로 바꾸는 것을 수행하게 됩니다. 여기서 문제가 생기는 것은 이미 기존에 사용했던 도메인을 그대로 사용하려고 했을 때 입니다. 저같은 경우 같은 url로 테스트하기 위해 azure에 올렸다가 지웠다 다시 올리는 것을 반복했었는데 이렇게 이전에 사용했던 도메인 주소를 사용하려고 하니 임시 주소에서는 잘 수행되지만 swap VIP를 하면 웹페이지가 뜨지 않는 현상이 발생했었습니다. 이 경우 해결책은 매우 간단합니다. 시간을 들여 기다리기만 하시면 됩니다. 도메인이 다시 적용되는데 시간이 좀 걸려서 발생하는 현상인 듯 하니 10분 이상 기다리시면 웹페이지가 다시 정상적으로 뜨는 것을 확인하실 수 있습니다.
azure에 어플리케이션을 올릴 때 warning이 발생하는 경우도 있으실 것입니다. 이것은 한 role의 instance의 수가 1개일 때 발생하는 것으로 instance의 수를 configuration file에서 수정해주시면 발생하지 않을 뿐만 아니라 99% 이상의 안정성을 얻을 수 있으므로 바꾸는 것을 추천해드립니다. 굳이 바꾸시지 않더라도 실행에 있어 문제가 생기지는 않습니다.
웹 프로그래밍을 할 때 정확히 어느 부분에서 문제가 생기는 지 알기 어려워 디버깅하기가 수월하지 않은 경우가 많습니다. 이 외에도 문제가 발생한다면 azure와 facebook에서 각자 제공하고 있는 forum에서 정보를 찾아본다면 같은 문제를 겪고있는 혹은 이미 겪은 개발자가 분명 존재하기 때문에 이들의 글과 답변을 참고하시면 좀 더 수월하게 해결하실 수 있을 것입니다.
