[์นด์นด์˜ค๋ทฐ] ๋ณด๋“œ ์ž๋™ ๋ฐœํ–‰ 2๋‹จ๊ณ„. ๊ตฌ๊ธ€ ์•ฑ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณธ์ธ ํ‹ฐ์Šคํ† ๋ฆฌ ํฌ์ŠคํŒ… ๊ธ€ ๊ฐ€์ ธ์˜ค๊ธฐ(OPEN API)
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋””์ง€ํ„ธ ๊ฟ€ํŒ

[์นด์นด์˜ค๋ทฐ] ๋ณด๋“œ ์ž๋™ ๋ฐœํ–‰ 2๋‹จ๊ณ„. ๊ตฌ๊ธ€ ์•ฑ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณธ์ธ ํ‹ฐ์Šคํ† ๋ฆฌ ํฌ์ŠคํŒ… ๊ธ€ ๊ฐ€์ ธ์˜ค๊ธฐ(OPEN API)

by ์ผ์ƒ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค 2022. 3. 19.
๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ค„ ์•„๋Š” ๋ถ„์ด๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

1๋‹จ๊ณ„. ํ‹ฐ์Šคํ† ๋ฆฌ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ฑ์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

ํ‹ฐ์Šคํ† ๋ฆฌ API ์•ฑ ๋“ฑ๋ก ์‚ฌ์ดํŠธ : https://www.tistory.com/guide/api/manage/register


2๋‹จ๊ณ„ . ์ธ์ฆ ์ฝ”๋“œ ๋ฐœ๊ธ‰ ๋ฐ›๊ธฐ 

๊ฐ€์ด๋“œ : https://tistory.github.io/document-tistory-apis/auth/authorization_code.html

๋ณธ์ธ ํ‹ฐ์Šคํ† ๋ฆฌ์— ๋“ค์–ด์™€์„œ ์•„๋ž˜ ๋งํฌ URL ์ฐฝ์— ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
https://www.tistory.com/oauth/authorize?client_id=๋ณธ์ธ๋ฐœ๊ธ‰ID&redirect_uri=https://๋ณธ์ธํ‹ฐ์Šคํ† ๋ฆฌURL&response_type=code&state=access-token 

Client ID์™€ redirect_uri๋Š” ์œ„์— ๋“ฑ๋กํ•œ ์•ฑ์ •๋ณด์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ณธ์ธ ํ‹ฐ์Šคํ† ๋ฆฌ์—์„œ ์œ„ ๋งํฌ๋ฅผ  ์ •์ƒ์ ์œผ๋กœ ์ž…๋ ฅํ•˜๋ฉด ์ธ์ฆ์ฐฝ์ด ๋‚˜์˜จ ํ›„ ํ—ˆ๊ฐ€ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์•„๋ž˜ ๋งํฌ๊ฐ€ URL ์ž…๋ ฅ์ฐฝ์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ๊ฑด ์•„๋ž˜ ๋งํฌ์˜ authorizationCode์ž…๋‹ˆ๋‹ค.

http://client.redirect.uri?code=authorizationCode&state=someValue

3๋‹จ๊ณ„ . access_token ๋งŒ๋“ค๊ธฐ

- authorizationCode ์„ ์‚ฌ์šฉํ•˜์—ฌ access token์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
3-1. ์ƒˆ๋กœ์šด chrome ์ฐฝ ๋„์šฐ๋ฉด์„œ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์—ด๊ธฐ (์„ค์ •>๋„๊ตฌ ๋”๋ณด๊ธฐ>๊ฐœ๋ฐœ์ž๋„๊ตฌ)


3-2. ์•„๋ž˜ ๋งํฌ ์ž…๋ ฅ ํ›„ ์—”ํ„ฐ
https://www.tistory.com/oauth/access_token?client_id='๋ณธ์ธ ID '&client_secret='๋ณธ์ธ screat' &redirect_uri=https://odaily.tistory.com&code=์œ„์— ๋ฐ›์€ authorizationCode &grant_type=authorization_code

์œ„์™€ ๊ฐ™์€ ์ฐฝ์ด ๋œจ์ง€๋งŒ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋‹ˆ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋ฌด์‹œํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๋„๊ตฌ์— [Network> Response]๋ฅผ ๋ณด๋ฉด access-toke ์ •๋ณด๊ฐ€ ์žˆ๋‹ค. ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

- ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ๋ฅผ ํ•˜๋‚˜ ์—ด๊ณ  ๋ฉ”๋‰ด์—์„œ ํ™•์žฅํ”„๋กœ๊ทธ๋žจ> App script๋ฅผ ํด๋ฆญํ•˜์—ฌ ์•„๋ž˜์†Œ์Šค๋ฅผ ๋ถ™์ธํ›„ ์ €์žฅ ๋ฐ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค

- ์•„๋ž˜ ์†Œ์Šค์—์„œ ๋ณต์‚ฌํ•œ accssToken ๊ฐ’์œผ๋กœ ์œ„ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

- blogName ์— odaily.tistory.com ๋„๋ฉ”์ธ์—์„œ ๋งจ ์•ž odaily๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (๋ณธ์ธ ํ‹ฐ์Šคํ† ๋ฆฌ ๋„๋ฉ”์ธ ํ™œ์šฉ)

function getTistory(){

  var accessToken = 'authorizationCode ์ž…๋ ฅํ•˜๊ธฐ';

  var url = "https://www.tistory.com/apis/post/list?access_token=" + accessToken + "&blogName=ํ‹ฐ์Šคํ† ๋ฆฌ ๋„๋ฉ”์ธ ์•„์ด๋””&output=json&page=1";

  var response = UrlFetchApp.fetch(url);
  
  var resData = response.getContentText();
  resData = JSON.parse(resData);

  Logger.log(resData);

  var arrTitle = new Array();
  var arrLink = new Array();
  var arrInfo = new Array();
  var arrDate = new Array();

  for(var i = 0 ; i < 10 ; i ++ ){
      arrTitle.push(resData.tistory.item.posts[i].title);
      arrLink.push(resData.tistory.item.posts[i].postUrl);
      arrDate.push(resData.tistory.item.posts[i].date)
  }

  arrInfo.push(arrTitle);
  arrInfo.push(arrLink);
  arrInfo.push(arrDate);

//์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์— ์„ธ๋กœ๋กœ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ
  var transposed = Array.from({ length: arrTitle.length }, () => new Array(2).fill(0)) 

  for (var o=0; o< arrInfo.length; o++) {
     for (var v=0; v<arrInfo[0].length; v++) { 
        [transposed[v][o]] = [arrInfo[o][v]];
    }
  }

  return transposed;
}

 

4๋‹จ๊ณ„ . ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์—์„œ ์‚ฌ์šฉ

์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์—์„œ =getTistory() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

์ด์ „ํŽธ : ๋„ค์ด๋ฒ„ ๋‰ด์Šค, ๋‹ค์Œ ์›น๊ฒ€์ƒ‰ ๋ฆฌ์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ ๐Ÿ“ฐ 

2022.03.17 - [๋ฐ˜๋ณต์ ์ธ ์—…๋ฌด ์ž๋™ํ™”] - [์นด์นด์˜ค๋ทฐ] ๋ณด๋“œ ์ž๋™ ๋ฐœํ–‰ 1๋‹จ๊ณ„. ๊ตฌ๊ธ€ ์•ฑ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋„ค์ด๋ฒ„ ๋‰ด์Šค, ๋‹ค์Œ ์›น๋ฌธ์„œ ๊ฐ€์ ธ์˜ค๊ธฐ(OPEN API)

 

[์นด์นด์˜ค๋ทฐ] ๋ณด๋“œ ์ž๋™ ๋ฐœํ–‰ 1๋‹จ๊ณ„. ๊ตฌ๊ธ€ ์•ฑ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋„ค์ด๋ฒ„ ๋‰ด์Šค, ๋‹ค์Œ ์›น๋ฌธ์„œ ๊ฐ€์ ธ์˜ค๊ธฐ(OPEN AP

์นด์นด์˜ค๋ทฐ ์ž๋™๋ฐœํ–‰์„ ํ•˜๋ ค๋‹ค ๋ณด๋‹ˆ ์–ด๋–ค ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ• ์ง€ ๊ณ ๋ฏผํ–ˆ๋‹ค. ๊ธฐ์กด๊นŒ์ง€ ์ˆ˜๋™์œผ๋กœ ํ•˜๋˜ ๋ณด๋“œ ๋ฐœํ–‰์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž๋™ ๋ฐœํ–‰์„ ์ƒ๊ฐํ•ด๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค. 1. ์ฝ˜ํ…์ธ  : ๋„ค

odaily.tistory.com

๋‹ค์Œ ํŽธ์€ ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ ๋ฆฌ์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ™‡๐Ÿป‍โ™€๏ธ

2022.03.21 - [๋ฐ˜๋ณต์ ์ธ ์—…๋ฌด ์ž๋™ํ™”] - [์นด์นด์˜ค๋ทฐ] ๋ณด๋“œ ์ž๋™ ๋ฐœํ–‰ 2๋‹จ๊ณ„. ๊ตฌ๊ธ€ ์•ฑ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณธ์ธ ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… ๊ธ€ ๊ฐ€์ ธ์˜ค๊ธฐ(OPEN API)

 

[์นด์นด์˜ค๋ทฐ] ๋ณด๋“œ ์ž๋™ ๋ฐœํ–‰ 2๋‹จ๊ณ„. ๊ตฌ๊ธ€ ์•ฑ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณธ์ธ ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… ๊ธ€ ๊ฐ€์ ธ์˜ค๊ธฐ(OP

๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ๋Š” ์ž๊ธฐ ๋ธ”๋กœ๊ทธ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ ๋ง๊ณ  ์ „์ฒด ๋ธ”๋กœ๊ทธ์—์„œ ํŠน์ • ๋‹จ์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์„œ์น˜ํ•˜๋Š” API๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค. ์šฐ์„  ๋‚ด ๋ชฉ์ ์€ ๋‚˜์˜ ๋ธ”๋กœ๊ทธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฑ™๊ฒจ์˜ค๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ

odaily.tistory.com

 

๋Œ“๊ธ€