THẢO LUẬN

Sep 27th, 2022 3:06 p.m.

Đa tạ đa tạ =))

0
Sep 27th, 2022 1:40 p.m.

Làm theo và chợt nhận ra không hỗ trợ GA4.

0
Avatar
đã bình luận cho bài viết
Sep 27th, 2022 12:20 p.m.

tks

0
Sep 27th, 2022 10:18 a.m.

ádasdasdz3754830005697_8a5b166cf4b827048c34af3f45b992d4.jpg

0

rất là hữu ích

0
Sep 27th, 2022 10:07 a.m.

awesome

0
Avatar
đã bình luận cho bài viết
Sep 27th, 2022 10:02 a.m.

Hay

0

tiếp theo nữa mình chạy lệnh sudo chown -R 82:82 . ở môi trường gốc và down-up docker cũng không được mà mình vào container app chạy chmod -R 777 /var/www/html/storage tuy nhiên chạy xong thì lại nhảy ra Undefined index: name của php và mình chạy command composer install vẫn chưa fix được, b có thể hỗ trợ giúp mình đoạn này không ạ

0

Bạn thử chạy code hàm getAccessToken, xong copy cái trả về từ hàm này lên playground gửi thử một vài request xem hoạt động được không.

0

Dùng như kia là OK rồi nhé bạn. Giờ bạn chỉ cần đảm bảo cái string trả về của getAccessToken() là access token hợp lệ là OK.

0
Sep 27th, 2022 8:40 a.m.

Em cám ơn anh rất nhiều !!!

0
Sep 27th, 2022 8:03 a.m.

@huukimit hàm getAccess thì em dùng ở ngay dưới luôn ạ nó ntn nhưng ở trong module.exports ._.

const nodemailer = require("nodemailer");
const { google } = require("googleapis");
const OAuth2 = google.auth.OAuth2;
const oauth2Client = new OAuth2(
  `${process.env.CLIENT_ID }`,
  `${process.env.CLIENT_SECRET}`,
  "https://developers.google.com/oauthplayground",
  
);
oauth2Client.setCredentials({
  refresh_token: `${process.env.REFRESH_TOKEN}`,
});
const accessToken = oauth2Client.getAccessToken()

async function getAccessToken () {
  let accessToken = await oauth2Client.getAccessToken()
  // let getAccessToken = JSON.stringify(accessTokenInit)
  strapi.log.debug(`Aceess token ${JSON.stringify(accessToken.token)}`)
  return accessToken.token

}
module.exports = async ({ env }) => ({
  // ...
  email: {
    provider: env(`${process.env.REACT_APP_EMAIL_PROVIDER}`),
    providerOptions: {
      host: env("EMAIL_SMTP_HOST", "smtp.gmail.com"),
      port: env("EMAIL_SMTP_PORT", 587),
      auth: {
        type: "OAuth2",
        user: "hotrodhv58@gmail.com",
        clientId: `"${process.env.CLIENT_ID }"`,
        clientSecret: `${process.env.CLIENT_SECRET}`,
        refreshToken: `${process.env.REFRESH_TOKEN}`,
        accessToken: await getAccessToken()
        
      },
    },
    settings: {
      defaultFrom: env(`${process.env.REACT_APP_EMAIL_ADDRESS_FROM}`),
      defaultReplyTo: env(`${process.env.REACT_APP_EMAIL_ADDRESS_REPLY}`),
    },
  },
  
  // ...
  
});
0

@bvk199x Bạn gửi đoạn code sử dụng hàm getAccessToken lên xem.

0
Sep 27th, 2022 7:55 a.m.

@huukimit vâng e đã fix và log ra đúng r a, a có thể xem giúp em nếu em async await như trên thì em có lấy đc cái giá trị trong acess_token không ạ? em chạy thì nó vẫn báo acesstk sai trong khi em log ra r gán thẳng vào thì chạy được

0

Quá lôi cuốn.. 😃)

0
Sep 27th, 2022 7:01 a.m.

@giang.nt Đúng gòi á b, mà hình như dưới thằng email vẫn không nhận được cái token kia ._.

0

Cảm ơn bạn vì một bài viết rất tâm huyết và những chia sẻ rất hữu ích ạ. Theo mình thì đối với những bạn sinh viên/những bạn mới làm CV thì rất khó để xác định được những mục nào cần đưa vào CV hoặc những gì nên viết và không nên viết vào từng mục. Khi đó các bạn nên sử dụng các trang tạo CV để được gợi ý nội dung thì sẽ tốt hơn và sẽ có định hướng đúng cho việc làm CV sau này. Còn đối với những ai đã quen làm CV rồi thì mình cũng đồng ý là tự làm và thiết kế CV sẽ rất tốt vì mình có thể tự thiết kế layout cho riêng mình sao cho phù hợp với lượng thông tin mình muốn truyền tải

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí