๊ฐ์ฌ์ฅ์ ์์ฑํ๊ณ , ๊ณต์ ํ ์ ์์ต๋๋ค.
์นด์นด์คํก ๋งํฌ์ ํ์ด์ค๋ถ URL ๊ฒ์๊ธ๋ก ๊ฐ์ฌ์ฅ์ ๋๋ ์ ์์ด์.
- ์นด์นด์ค ๊ฐ๋ฐ์์์ ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ํ๋ซํผ์ ๋ฑ๋กํ๊ณ ,
JavaScript API ํค
๋ฅผ ์ป์ต๋๋ค. public/index.html
์ Kakao SDK CDN์ ์ถ๊ฐํฉ๋๋ค(์ฝ๋).- ์ฝ๋
// SDK๋ฅผ typescript์์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํ ์์ declaration
declare const Kakao: any;
// initializeKakaotalk์ SDK ์ด๊ธฐํ๋ฅผ ์ํด ํ ๋ฒ๋ง ํธ์ถ๋์ด์ผ ํฉ๋๋ค.
export const initializeKakaotalk = () => {
Kakao.init('YOUR_API_KEY');
};
export const shareWithKakaotalk = (shareLink: string, shareName: string): void => {
Kakao.Link.createDefaultButton({
container: '#kakao-share-button',
objectType: 'feed',
content: {
title: `${shareName} ๋๊ป์ ๋ณด๋ธ ์๋ก์ด ๊ฐ์ฌ์ฅ์ด ๋์ฐฉํ์ด์!`,
description: '๐ ์๋ ๋ฒํผ์ ๋๋ฌ์ ํ์ธํด ์ฃผ์ธ์.',
imageUrl: 'https://raw.githubusercontent.com/junhoyeo/citation/master/src/assets/images/kakaotalk.png',
link: { mobileWebUrl: shareLink, webUrl: shareLink },
},
buttons: [
{
title: '์ง๊ธ ํ์ธํ๊ธฐ',
link: { mobileWebUrl: shareLink, webUrl: shareLink },
},
],
});
};
-
initializeKakaotalk
ํจ์๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๊ฒ ๋๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋,ReactDOM.render
๊ฐ ์๋index
๋๋Router
๋ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฃจํธ์์ ํธ์ถํ ์ ์๊ฒ ํฉ๋๋ค. -
shareWithKakaotalk
์ ์คํํ๊ฒ ๋๋ฉด ํ์ฌ ๋ก๊ทธ์ธ๋ ์นด์นด์คํก ๊ณ์ ์ ์น๊ตฌ์ ์ฑํ ๋ฐฉ์ ๊ณต์ ํ ์ ์๋ ์ฐฝ์ด ์ด๋ฆฝ๋๋ค.
๋ณด๋ธ ๋ฉ์ธ์ง๋ ์์ฒ๋ผ ํ์๋ฉ๋๋ค.
๋ณต์กํ ์ ์ฐจ ์์ด Facebook์
sharer.php
๋ฅผ ์ด์ฉํด URL์ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
public/index.html
์og:title
,og:image
๋ฑ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค.- ๋ณธ ํ๋ก์ ํธ๋ spa-github-pages(ํ๊ตญ์ด ๋ฒ์ญ)์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด Github Pages ์์์
BrowserRouter
SPA ์ฑ์ ๊ตฌํํ๋ฏ๋ก,public/404.html
์๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. - ์ฝ๋
// ๊ณต์ ํ URL์ ์ฟผ๋ฆฌ๋ฅผ ๋ฌธ์์ด ํ
ํ๋ฆฟ์ ์ด์ฉํด ๋น๋ฉํฉ๋๋ค.
const shareURL = `https://www.facebook.com/sharer.php?u=${shareLink}&t=${shareTitle}`;
// ์ ์ ํ ์ฌ์ด์ฆ๋ก ๋ณด์ด๊ฒ ์ด์ด ์ค๋๋ค.
window.open(shareURL, '', 'width=500,height=500,left=600');
๊ณต์ ๋ URL์ ์์ฒ๋ผ ๋ณด์ ๋๋ค.