Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

인증연동없이 SNS에 작성할 글 전달하기

기본적으로 SNS 연동이라 하면 OAuth등을 이용해서 로그인같은 인증연동까지 하는 것은 보통이지만 여러가지 상황때문에 그러지 못할 경우도 있습니다. 자주 쓰는 서비스라면 모를까 지나가는 사이트에서도 OAuth로 로그인 하는 것은 사용자로써도 피곤한 일일수 있습니다.

SNS에는 API를 이용한 연동만 있는줄 알았는데 단순히 URL을 통해서 파라미터로 내용은 전달해서 각 SNS의 글쓰는 란을 채워줄 수 있는 기능을 제공하고 있었습니다.(웹사이트에 있는 SNS버튼들은 잘 이용하지 않는 관계로 이런 기능도 제공하고 있는지는 몰랐었네요.) 제가 사용해 본것은 FacebookTwitter, me2day입니다.

동작은 모두 동일합니다. 각 SNS에서 제공하는 URL에 파라미터로 내용이나 링크를 전달하면 해당 유저가 로그인하지 않았으면 자동으로 로그인창이 나타나고 로그인후에 각 SNS페이지의 글을 작성하는 Textarea영역에 전달한 내용이 자동으로 입력되어 사용자는 전송버튼만 클릭하면 글을 작성할 수 있게 하는 구조입니다.

Twitter
http://twitter.com/home?status=전달할컨텐츠

status에 필요한 텍스트를 전달만 하면 됩니다. 그냥 적어도 되기는 하지만 URL이므로 URL인코딩정도는 해서 넘겨주면 더 좋을듯 합니다. 당연히 140자 이내로 적어주는게 좋겠습니다.


me2day
http://me2day.net/posts/new?new_post[body]=전달할컨텐츠

약간은 특이한 모양의 파라미터명을 가지고 있습니다. 링크같은 경우는 미투데이의 링크포맷인 "링크명":URL 같은 형식의 스트링을 만들어서 전달해주면 됩니다. 여기도 마찬가지로 URL을 인코딩해주는것이 좋겠습니다.


Facebook
http://www.facebook.com/sharer.php?u=<공유할 url>&t=<컨텐트 타이틀>

트위터나 미투데이와는 다르게 페이스북은 마이크로블로그 사이트가 아니기 때문에 좀더 복잡합니다. 위의 URL은 글을 작성할때 링크를 추가하는 기능입니다. u 파라미터에 공유할 링크를 주고 그에대한 타이틀을 t로 전달합니다. 테스트 결과 사실 이 t는 크게 의미가 없고 페이스북이 URL로 호출을 날려서 페이지의 타이틀을 가져와서 자동으로 보여줍니다. 마치 이게 실패하면 t로 넘긴 값을 보여줄것 같지만 실패하면 아무것도 보여주지 않습니다. t는 그냥 URL에서 타이틀을 가져오기 전까지 잠시 보여줬다가 타이틀정보로 교체됩니다.

일반적으로 URL은 당연히 URI인코딩을 해서 넘기는 것이지만 페이스북의 경우에는 약간 달랐습니다. 정확한 페이스북이 URL의 정보를 파악해내는 패턴까지는 분석하지 못했지만 URL의 문제인지 페이지 마크업의 문제인지 해당 URL의 제목과 썸네일을 가져와야 하는데 이것이 실패하는 경우가 종종있습니다. 이럴 때는 URL인코딩을 취소한다던지 하는 식의 시도를 해보면 됩니다. 저같은 경우는 마지막에 슬래쉬(/)가 있느냐 없냐에 따라서 제목의 인코딩이 깨지냐 안깨지냐의 차이가 나기도 했습니다.
2010/08/12 03:41 2010/08/12 03:41