채팅에서 Google 캘린더 사용하기
1. 왜 만들었다…
일 사이에, 어쩐지 「채팅 앱으로 Google Calendar를 조작할 수 없을까」라고 말해진다.
1-1. 왜 REST API
GCM은 서투르고, 다만 Azure Function를 만지기 때문에 그 연장에.
1-2. 어떤 것을 만들려고 했는가?
텍스트를 자연 언어 분석 → Function으로 나누어 Google Calendar API 메서드를 실행
→ 채팅에 결과 표시
2. 거친 구성
2-1. Google APIs
먼저 API를 활성화하고 서비스 계정을 만들어 여기에서 사용할 privatekey를 만듭니다.
여기에서 Google Calendar API를 선택하고 활성화하면 기존 프로젝트와 새 프로젝트에서 API를 사용할 수 있습니다.
콘솔에서 인증 가능한 경우 OAuth 키 게시 → 기타를 선택하면 google-auth-library에서 사용할 client_secret.json을 게시 할 수 있습니다. 이번에는 콘솔에서 박는 것은 무리이므로 서비스 계정 작성에.
작성이 끝나면 자동으로 토큰 등이 기입되어 있는 json 파일이 다운로드되므로 privatekey.json에 명명.
업로드해 둡시다.
2-2. Azure Function
Web App 자체는 무엇이든 좋다. 필자, 프로그래밍 첫해에 Node.js의 기초 정도밖에 알 수 없는 상태.
Google Apis는 Firebase를 권장하지만 이번에는 Azure 샘플을 활용하기 위해 여기에.
향후 샘플 작성한다면 배포까지 간단한 GCM을 추천.
어쨌든, Example대로 만들려고하면 google-auth-library와 함께 인증해야합니다.
하지만 이것은 콘솔에서 토큰을 되풀이해야하며 상호 작용할 수 없다 (필자의 능력 부족일지도 모르지만) Function APP나 임베디드 된 어플리케이션을 위해 준비된 JWT를 사용.
NPM에서 제공하는 googleapis 모듈을 가져와 첫 번째 인증을.
Function의 index.jslet jwtClient = new google.auth.JWT(
privatekey.client_email,
null,
SCOPES: ['https://www.googleapis.com/auth/calendar.readonly'],
null
);
jwtClient.authorize(function (err, tokens) {
if(err) {
console.log("auth err: " + err);
return;
} else {
console.log("auth done");
{APIsに用意されているメソッド)
}
});
JWT(Json Web Token)는, OAuth2등에서 준비한 프라이빗 키를 가지고 인증원과 교환을 실시하는 역할.
자세한 내용은 여기를 참조
· JWT (JSON Web Token)를 사용하여 인증 시도
· Using OAuth 2.0 for Server to Server Applications
그리고, 메소드는 APIs Explorer 로 지정하고 있는 값을 JSON 로 건네줄 수 있습니다.
Sample_Method.jsfunction listEvents(auth) {
console.log("listing Events");
var calendar = google.calendar('v3');
calendar.events.list({
auth: auth,
calendarId: {カレンダーのID},
timeMin: (new Date()).toISOString(),
maxResults: 10,
singleEvents: true,
orderBy: 'startTime'
}, function(err, response) {
if (err) {
console.log(err);
return;
} else {
var events = response.items;
if (events.length == 0) {
console.log('No upcoming events found.');
} else {
async.each(events, (i, next) => {
var event = i;
var startTime = event.start.dateTime.slice(11,-6);
var startMsec = new Date(event.start.dateTime).getTime();
var endTime = event.end.dateTime.slice(11,-6);
var endMsec = new Date(event.end.dateTime).getTime();
var during = ((endMsec - startMsec)/60000) + " MIN";
var start = event.start.dateTime || event.start.date;
var eventId = event.id;
console.log('%s (%s) - %s (%s)', startTime, during, event.summary, eventId);
}, (err) => {
if(err) throw err;
});
}
}
});
}
2-3. Google Calendar
· 오래된 UI
· 새로운 UI
캘린더 ID는 캘린더 설정에서 확인하세요.
권한은 calendar.events.list등은 열람까지로, insert등을 실시하기 위해서는 writer 이상의 권한이 필요합니다.
SCOPE도 readonly를 제거해야합니다. 여러 번 변경을 잊었기 때문에주의.
3. 감상
일부러 채팅으로 캘린더를 사용한다니, 좀처럼 없는구나라고 생각하면서, Google APIs의 공부가 되었다고는 생각했습니다. 이상.
Reference
이 문제에 관하여(채팅에서 Google 캘린더 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wonjae-kim/items/8b1fa5532f26aeb716e8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
2-1. Google APIs
먼저 API를 활성화하고 서비스 계정을 만들어 여기에서 사용할 privatekey를 만듭니다.
여기에서 Google Calendar API를 선택하고 활성화하면 기존 프로젝트와 새 프로젝트에서 API를 사용할 수 있습니다.
콘솔에서 인증 가능한 경우 OAuth 키 게시 → 기타를 선택하면 google-auth-library에서 사용할 client_secret.json을 게시 할 수 있습니다. 이번에는 콘솔에서 박는 것은 무리이므로 서비스 계정 작성에.
작성이 끝나면 자동으로 토큰 등이 기입되어 있는 json 파일이 다운로드되므로 privatekey.json에 명명.
업로드해 둡시다.
2-2. Azure Function
Web App 자체는 무엇이든 좋다. 필자, 프로그래밍 첫해에 Node.js의 기초 정도밖에 알 수 없는 상태.
Google Apis는 Firebase를 권장하지만 이번에는 Azure 샘플을 활용하기 위해 여기에.
향후 샘플 작성한다면 배포까지 간단한 GCM을 추천.
어쨌든, Example대로 만들려고하면 google-auth-library와 함께 인증해야합니다.
하지만 이것은 콘솔에서 토큰을 되풀이해야하며 상호 작용할 수 없다 (필자의 능력 부족일지도 모르지만) Function APP나 임베디드 된 어플리케이션을 위해 준비된 JWT를 사용.
NPM에서 제공하는 googleapis 모듈을 가져와 첫 번째 인증을.
Function의 index.js
let jwtClient = new google.auth.JWT(
privatekey.client_email,
null,
SCOPES: ['https://www.googleapis.com/auth/calendar.readonly'],
null
);
jwtClient.authorize(function (err, tokens) {
if(err) {
console.log("auth err: " + err);
return;
} else {
console.log("auth done");
{APIsに用意されているメソッド)
}
});
JWT(Json Web Token)는, OAuth2등에서 준비한 프라이빗 키를 가지고 인증원과 교환을 실시하는 역할.
자세한 내용은 여기를 참조
· JWT (JSON Web Token)를 사용하여 인증 시도
· Using OAuth 2.0 for Server to Server Applications
그리고, 메소드는 APIs Explorer 로 지정하고 있는 값을 JSON 로 건네줄 수 있습니다.
Sample_Method.js
function listEvents(auth) {
console.log("listing Events");
var calendar = google.calendar('v3');
calendar.events.list({
auth: auth,
calendarId: {カレンダーのID},
timeMin: (new Date()).toISOString(),
maxResults: 10,
singleEvents: true,
orderBy: 'startTime'
}, function(err, response) {
if (err) {
console.log(err);
return;
} else {
var events = response.items;
if (events.length == 0) {
console.log('No upcoming events found.');
} else {
async.each(events, (i, next) => {
var event = i;
var startTime = event.start.dateTime.slice(11,-6);
var startMsec = new Date(event.start.dateTime).getTime();
var endTime = event.end.dateTime.slice(11,-6);
var endMsec = new Date(event.end.dateTime).getTime();
var during = ((endMsec - startMsec)/60000) + " MIN";
var start = event.start.dateTime || event.start.date;
var eventId = event.id;
console.log('%s (%s) - %s (%s)', startTime, during, event.summary, eventId);
}, (err) => {
if(err) throw err;
});
}
}
});
}
2-3. Google Calendar
· 오래된 UI
· 새로운 UI
캘린더 ID는 캘린더 설정에서 확인하세요.
권한은 calendar.events.list등은 열람까지로, insert등을 실시하기 위해서는 writer 이상의 권한이 필요합니다.
SCOPE도 readonly를 제거해야합니다. 여러 번 변경을 잊었기 때문에주의.
3. 감상
일부러 채팅으로 캘린더를 사용한다니, 좀처럼 없는구나라고 생각하면서, Google APIs의 공부가 되었다고는 생각했습니다. 이상.
Reference
이 문제에 관하여(채팅에서 Google 캘린더 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wonjae-kim/items/8b1fa5532f26aeb716e8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(채팅에서 Google 캘린더 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wonjae-kim/items/8b1fa5532f26aeb716e8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)