트위터 공유하기 구현 성공
하고나면 별거아니였지만 찾아 헤맸던 결정적인 oprion은 'card'속성이다
리액트로 sns 공유하기 기능을 구현하다보니 서버사이드렌더 관련된 문제로인하여
mata의 data를 토대로 공유하기 컨텐츠를 만드는 현재의 개발 방식엔 문제가 생겼다.
-> 새로운 페이지를 따로 생성하여 해당 페이지의 meta값을 동적을 받아와 실행시키도록 진행했다.
window.open('http://www.facebook.com/sharer/sharer.php?u=' + url, 'facebook', 'scrollbars=no, width=500, height=5000');
공유될 sns페이지가 열리되 들어갈 데이터는 새로운 url의 meta값이 가져와진다.
이때 url은 이런식으로 만들었다.
`https://원하는 페이지 주소 지정/share/facebook?title=${encodeURIComponent(title)}&img=${encodeURIComponent(img)}&card=summary_large_image&desc=${encodeURIComponent(desc)}&url=${encodeURIComponent(typeTestUrl)}`
너무나도 긴... url이 있는 그대로 보여지는 것이다....그래서 시도한 방법 하나
-> api로 필요한 데이터를 보내면 해당 url을 똑같이 생성하되 shortURL로 받아서 보여줄 수 있도록 진행하였다.
-> 보안상의 이유로 코드를 조금 수정,생략했지만 대략 이런식으로 진행했다.shortURL은 변수로 사용해도되고 그대로 사용해도된다.
if(snsShare === facebook){
window.open('http://www.facebook.com/sharer/sharer.php?u=' + shortURL, 'facebook', 'scrollbars=no, width=500, height=5000');
} else if(snsShare === twitter){
window.open('https://twitter.com/intent/tweet?url=' + shortURL, 'twitter', 'scrollbars=no, width=500, height=5000');
}
그러나 또 새로운 문제가 생겼다.
트위터는 meta에서 card라는 옵션이 있는데 해당 옵션값이 string으로 해놓고는 에러도 안나오니 한참을 헤맸었다..... card도 동적으로 porps받아서 사용하되 card='summary_large_image'이렇게 값을 고정값으로 넣어주었더니 그 뒤부터는 정상적으로 탬플릿에 필요한 데이터가 들어가있는 상태로 보여졌다.
어찌저찌 공유하기 기능 구현 성공..!!