Firebase Cloud Functions를 사용하여 OGP 이미지 디스플레이를 구현하는 방법
3579 단어 트위터FirebaseOGPcloudfunctions
Firebase 요금 플랜 변경
요금 플랜을 従量制
로 변경합니다. 외부 서버와의 통신이 필요하기 때문에 従量制
플랜으로 할 필요가 있습니다.
Functions를 사용하는 프로젝트 만들기
firebase cli
에서 초기화 시 functions
사용
firebase init
〜
◉ Functions: Configure and deploy Cloud Functions
OGP 내용을 얻는 코드
https.onCall 프로토콜에서 구현해 본 코드
필수 모듈 설치
npm i --save request
npm i --save request-promise
OGP 취득을 시도하는 코드
import * as rp from 'request-promise';
class Api {
private constructor() {
}
public static async getSiteMeta(u: string) {
const now = (new Date()).getTime();
const result = {title: 'リンク', url: u, ogp: '', err: null, createDate: now};
return rp(u)
.then( (body: string) => {
const t = body.match(/<title.*?>(.*?)<\/title>/);
if (t !== null) {
// console.log('t', t[1]);
result.title = t[1];
}
const o = body.match(/<meta property="og:image" content="(.*?)"/);
if (o !== null) {
result.ogp = o[1];
}
return Promise.resolve(result);
})
.catch((err: any) => {
// console.log( 'err', err );
result.err = err.message;
return Promise.resolve(result);
});
}
};
exports.getSiteMeta = functions.https.onCall( async (data, context) => {
return await Api.getSiteMeta(data.url);
});
OGP 내용을 쉘에서 시도
firebase functions:shell
에서 로컬로 실행할 수 있으므로 시도하십시오.
functions init시에 TypeScript를 선택한 경우는 npm run shell
로 실행할 수 있다.
cd functions
npm run shell
> getSiteMeta({url: 'http://dev.ooen.me/r/WbOHbEeX'})
〜
RESPONSE RECEIVED FROM FUNCTION: 200, {
"result": {
"title": "コンビニプリンおすすめ4種",
"url": "http://dev.ooen.me/r/WbOHbEeX",
"ogp": "https://firebasestorage.googleapis.com/v0/b/ooen-dev.appspot.com/o/OfRBD4q3KpMxcBiLLAwN8a7bEav1%2Ft_furu-1585796845061.jpg?alt=media&token=e63dde4d-1530-4d64-a0d8-0ce7c8d15e76",
"err": null,
"createDate": 1585803379441
}
}
호스팅에서 실행되는 코드 샘플
public static getSiteMeta(u: string, callback: (data: any) => void) {
const siteMeta = firebase.functions().httpsCallable('getSiteMeta');
siteMeta({url: u}).then((result: any) => {
// console.log('result', result);
callback(result.data);
});
}
작성 중 서비스 오오엔
경험이나 행동한 일을 리스트로 해 공개하면(자), 누군가가 시도했다든가 행동했어! 가 도착하기 때문에 조금 기뻐하는 서비스. 시도하거나 행동 한 사람을 부담없이 즐겁게 응원할 수 있습니다. 흥미있는 분, 어떤 리스트 만들고 싶은지 등 사전 등록으로 가르쳐 받을 수 있으면 기쁩니다!
이런 느낌의 이미지를 Twitter에 공유하는 것으로 응답이 도착하기도합니다.
#재택근무 의 동행에 편의점 #푸딩을 먹어 비교. #미치푸 #이탈리안푸딩
#편의점푸딩추천4종
#오오엔 by @t_furu
http://dev.ooen.me/r/WbOHbEeX
Reference
이 문제에 관하여(Firebase Cloud Functions를 사용하여 OGP 이미지 디스플레이를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/t_furu/items/37996244c6001678097b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
firebase cli
에서 초기화 시 functions
사용firebase init
〜
◉ Functions: Configure and deploy Cloud Functions
OGP 내용을 얻는 코드
https.onCall 프로토콜에서 구현해 본 코드
필수 모듈 설치
npm i --save request
npm i --save request-promise
OGP 취득을 시도하는 코드
import * as rp from 'request-promise';
class Api {
private constructor() {
}
public static async getSiteMeta(u: string) {
const now = (new Date()).getTime();
const result = {title: 'リンク', url: u, ogp: '', err: null, createDate: now};
return rp(u)
.then( (body: string) => {
const t = body.match(/<title.*?>(.*?)<\/title>/);
if (t !== null) {
// console.log('t', t[1]);
result.title = t[1];
}
const o = body.match(/<meta property="og:image" content="(.*?)"/);
if (o !== null) {
result.ogp = o[1];
}
return Promise.resolve(result);
})
.catch((err: any) => {
// console.log( 'err', err );
result.err = err.message;
return Promise.resolve(result);
});
}
};
exports.getSiteMeta = functions.https.onCall( async (data, context) => {
return await Api.getSiteMeta(data.url);
});
OGP 내용을 쉘에서 시도
firebase functions:shell
에서 로컬로 실행할 수 있으므로 시도하십시오.functions init시에 TypeScript를 선택한 경우는
npm run shell
로 실행할 수 있다.cd functions
npm run shell
> getSiteMeta({url: 'http://dev.ooen.me/r/WbOHbEeX'})
〜
RESPONSE RECEIVED FROM FUNCTION: 200, {
"result": {
"title": "コンビニプリンおすすめ4種",
"url": "http://dev.ooen.me/r/WbOHbEeX",
"ogp": "https://firebasestorage.googleapis.com/v0/b/ooen-dev.appspot.com/o/OfRBD4q3KpMxcBiLLAwN8a7bEav1%2Ft_furu-1585796845061.jpg?alt=media&token=e63dde4d-1530-4d64-a0d8-0ce7c8d15e76",
"err": null,
"createDate": 1585803379441
}
}
호스팅에서 실행되는 코드 샘플
public static getSiteMeta(u: string, callback: (data: any) => void) {
const siteMeta = firebase.functions().httpsCallable('getSiteMeta');
siteMeta({url: u}).then((result: any) => {
// console.log('result', result);
callback(result.data);
});
}
작성 중 서비스 오오엔
경험이나 행동한 일을 리스트로 해 공개하면(자), 누군가가 시도했다든가 행동했어! 가 도착하기 때문에 조금 기뻐하는 서비스. 시도하거나 행동 한 사람을 부담없이 즐겁게 응원할 수 있습니다. 흥미있는 분, 어떤 리스트 만들고 싶은지 등 사전 등록으로 가르쳐 받을 수 있으면 기쁩니다!
이런 느낌의 이미지를 Twitter에 공유하는 것으로 응답이 도착하기도합니다.
#재택근무 의 동행에 편의점 #푸딩을 먹어 비교. #미치푸 #이탈리안푸딩
#편의점푸딩추천4종
#오오엔 by @t_furu
http://dev.ooen.me/r/WbOHbEeX
Reference
이 문제에 관하여(Firebase Cloud Functions를 사용하여 OGP 이미지 디스플레이를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/t_furu/items/37996244c6001678097b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Firebase Cloud Functions를 사용하여 OGP 이미지 디스플레이를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/t_furu/items/37996244c6001678097b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)